PDA

Visualizza la versione completa : [C] input da file


Mistral82
16-02-2010, 19:55
Salve ragazzi,
sapreste dirmi l'esatta sequenza di istruzioni da implementare nella funzione MAIN() per importare alcune righe di testo da un file .txt esterno?
Dovrebbe simulare l'input diretto da tastiera in pratica...ho provato con le funzioni gets(), stdin(),... ma non mi funziona!
Grazie dell'aiuto!

oregon
16-02-2010, 19:58
l'esatta sequenza di istruzioni

Basta qualche indicazione?


per importare alcune righe di testo da un file .txt esterno?

Cioè, vuoi leggere da un file di testo delle righe?


Dovrebbe simulare l'input diretto da tastiera

Questo non l'ho capito ... che collegamento c'e' con il problema della lettura da file di testo?


in pratica...ho provato con le funzioni gets(), stdin(),... ma non mi funziona!

Facci vedere (e spiega) il codice che hai scritto e vediamo cosa non va ...

Mistral82
16-02-2010, 20:05
int main() {
int a;
a=yylex();
system("PAUSE");
return 0;
}

Scrivendo il codice in questa maniera, inserisco una stringa da tastiera e quando premo invio parte la funzione yylex() (è un parser lessicale) che analizza la stringa inserita.
Vorrei modificare il codice in modo tale che prenda queste stringhe automaticamente da un file di testo e non da tastiera...

oregon
16-02-2010, 20:19
Originariamente inviato da Mistral82
int main() {
int a;
a=yylex();
system("PAUSE");
return 0;
}

Scrivendo il codice in questa maniera, inserisco una stringa da tastiera

Ma il codice per l'input da tastiera dov'è?

In ogni modo, sai aprire un file e leggere una riga? Sai usare le funzioni

fopen
fgets
fclose


?

Mistral82
16-02-2010, 22:20
Originariamente inviato da oregon
Ma il codice per l'input da tastiera dov'è?

In ogni modo, sai aprire un file e leggere una riga? Sai usare le funzioni

fopen
fgets
fclose

?

Si le so usare...comunque ho trovato questo pezzo di codice che in teoria dovrebbe dare l'opportunità di associare il flusso d'ingresso ad un file passato come argomento da riga di comando oppure direttamente allo standard input se il primo non è presente.


int main (int argc, char** argv) {
++argc; --argv;
if(argc > 0)
yyin = fopen(argv[0], "r");
else yyin = stdin;
yylex();
return 0;
}


Scrivendo però ad esempio "nome_file_eseguibile nome_file_di_testo" da linea di comando non funziona...

MacApp
17-02-2010, 02:52
Originariamente inviato da Mistral82
yyin = fopen(argv[0], "r");


Scrivendo però ad esempio "nome_file_eseguibile nome_file_di_testo" da linea di comando non funziona...
con argv[0] ti riferisci a nome_file_eseguibile.

oregon
17-02-2010, 07:49
Originariamente inviato da Mistral82
comunque ho trovato questo pezzo di codice che ...

Cosa fai con

++argc; --argv;

?

Cosa è yyin ?

Neanche dovrebbe compilare ...

Ma forse, tu vuoi qualcosa del genere ... da console DOS scrivi

nome_file_eseguibile <nome_file_testo

ant_alt
17-02-2010, 16:49
Originariamente inviato da oregon
nome_file_eseguibile <nome_file_testo

anch'io pensavo lo stesso, in ogni caso c'è da modificare quel codice che ha postato probabilmente trovato su yahoo answer :stordita: , argc sempre vale almeno 1, ma questo è solo il primo problema :fagiano:

Mistral82
17-02-2010, 18:06
Originariamente inviato da MacApp
con argv[0] ti riferisci a nome_file_eseguibile.


Originariamente inviato da oregon
Ma forse, tu vuoi qualcosa del genere ... da console DOS scrivi

nome_file_eseguibile <nome_file_testo

Ho risolto...grazie mille dell'aiuto ad entrambe!
Ho cambiato argv[0] in argv[1] ed ho scritto da console l'istruzione che mi ha detto oregon...ma perchè è necessario il segno '<'??

oregon
17-02-2010, 18:27
Originariamente inviato da Mistral82
ho scritto da console l'istruzione che mi ha detto oregon...ma perchè è necessario il segno '<'??

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/redirection.mspx?mfr=true

Loading