View Full Version : [C/C++] Lo odio.
Ma è possibile che con il C/C++ per far le cose più semplici del mondo non si riesce mai?!
int main(int argc, char **argv) {
ifstream input_data;
input_data.open(("%sdato.txt", argv[1]), ios::in);
...
}
In pratica se uno chiama
pippo.exe 04
Il programma legge i dati di input da 04dato.txt
Mi spiegate come caspio faccio a farlo funzionare? Così non va.
il nome del file lo costruisci in questo modo: argomento_del_programma+"dato.txt" perchè il %s viene sostituito da argv[1]. Se l'argomento che passi è 04 lui apre 04dato.txt, non c'è nulla di strano....
cambialo così:
input_data.open(("%s", argv[1]), ios::in);
il nome del file lo costruisci in questo modo: argomento_del_programma+"dato.txt" perchè il %s viene sostituito da argv[1]. Se l'argomento che passi è 04 lui apre 04dato.txt, non c'è nulla di strano....
cambialo così:
input_data.open(("%s", argv[1]), ios::in);
Non è la stessa cosa che ho scritto io?
Io devo aprire per la lettura ad esempio il file 01dato.txt
però facendo ("%sdato.txt", argv[1]) non mi funziona. :(
Umh io non conosco a fondo né amo C++, ma in C non dovrebbe essere difficile farlo funzionare...
int main (int argc, char **argv) {
FILE *fl;
char nome[256];
sprintf (nome, "%sdato.txt", argv[1]);
fl = fopen (nome, "r");
/* ... */
}
Se non ti piacciono le funzioni di i/o del C o se la libreria da te usata ha delle cose particolari che ti servono, però, non ti so aiutare. Tuttavia la funzione sprintf la puoi sempre usare per usare un filename modificato running time come fosse costante (ma ricordati di allocare la memoria nella stringa prima di farlo, dichiarando un array esplicito o con malloc).
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.