facendo riferimento ai sorgenti di ieri, osservando il file infile.txt, ho notato che l'ultima espressione non funziona perchè operatori ed operandi sono separati da due blank anzichè da uno solo, l'errore è senz'altro quello.
Un altro errore è il controllo sul valore di ritorno della funzione parsifica.
Se quando il calcolo va a buon fine viene ritornato 0, messo in && con 1, il risultato sarà sempre 0 e quindi il risultato non verrà stampato.
Io utilizzerei direttamente il valore di ritorno della funzione originale, è fatto apposta
Purtroppo il codice che hai linkato non posso scaricarlo e quindi ti posto quello di ieri modificato:
codice:
int scansiona_file(FILE * infile,FILE * outfile){
int val=1;
float risultato;
time_t t = time (NULL);
struct tm *tp = localtime (&t);
char *stringa = malloc(STRLEN*sizeof(char));
char *ora = malloc(STRLEN*sizeof(char));
memset(stringa, '\0', STRLEN);
memset(ora, '\0', STRLEN);
// strftime (ora, STRLEN, "%a %b %e %H:%M:%T %Y", tp);
// fprintf(outfile,"Sessione di calcolo del %s",ora);
while(!feof(infile)){
fgets(stringa,STRLEN,infile);
printf("%s\n", stringa);
fprintf(outfile,"%s\n",stringa);
if (parsifica(stringa, &risultato) != 0)
{
fprintf(outfile,"errore nel calcolo del risultato.\n");
printf("errore nel calcolo del risultato.\n");
return 1;
}
fprintf(outfile,"Risultato: %f \n\n",risultato);
}
return 0;
}