Ho questo file in formato lex:
codice:
digit [0-9]
fract {digit}.{digit}
character [a-zA-Z]
%%
{digit}+ printf("%d\n",atoi(yytext));
{fract}+ printf("%f\n",atof(yytext));
{character}+ printf("%s\n",yytext);
Con la compilazione non ci sono problemi, ma il problema è un comportamento non voluto che non so come evitare.
In pratica quello che voglio fare è stampare la stringa che digita l' utente, però se l' utente digita un intero, viene convertito con atoi, se digita un numero reale viene convertito con atof.
Ma il problema è che se ad esempio digito "0.09" viene stampato:
Due cose che non capisco:
-Perchè stampa 0.0 ? Non dovrebbe convertire la stringa in 0.090000?
-Come evitare che stampi anche 9? In effetti 0.09 è una stringa che contiene anche un intero.Come specificare che se è un numero reale va stampata solo la stringa convertita con atof?