|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2005
Messaggi: 773
|
[Flex] Dare file in input al programma.
Salve,
sto imparando ad utilizzare Flex (generatore di scanner in C++), ed ho provato a fare un semplice programma di esempio che conti il numero di righe e di caratteri presenti in un file. Ho fatto dunque il seguente file .fl Codice:
%{
int num_lines = 0, num_chars = 0;
%}
%option noyywrap
%%
\n ++num_lines; ++num_chars;
. ++num_chars;
%%
main()
{
yylex();
printf("Il file contiene %d caratteri in %d righe.\n", num_chars, num_lines);
}
Il problema (molto stupido ma a cui non ho ancora trovato risposta) è il seguente: come fare a passare il file di testo da dare in input al programma generato? Digitando nel prompt "nomeprogramma.exe nomefile.txt" non ottengo nulla, per cui suppongo che non sia questa la procedura esatta. Scusate per la banalità della domanda Ciao |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Devi aggiungere il codice seguente prima della chiamata a yylex():
Codice:
if ( argc > 1 )
yyin = fopen( argv[1], "r" );
else
yyin = stdin;
Codice:
%{
int num_lines = 0, num_chars = 0;
%}
%option noyywrap
%%
\n ++num_lines; ++num_chars;
. ++num_chars;
%%
main(int argc, char **argv)
{
if ( argc > 1 )
yyin = fopen( argv[1], "r" );
else
yyin = stdin;
yylex();
printf("Il file contiene %d caratteri in %d righe.\n", num_chars, num_lines);
}
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:06.



















