Salve,
sto sviluppando un calcolatrice polacca inversa che prende da un file .txt valori:
es:
codice:
 621.4 2 + 6.12 + 12 -
 19 2 + 9 + 15 -
 14 488 + 6 + 10 -
quindi io ho pensato di svolgere così il mio while
codice:
    void* tmp=(char*)malloc(100);
    void* buff=(char*)malloc(100);

while (!feof(filei)){          
          fgets(buff, BUFSIZE, filei);
          fprintf (fileo, "\nCodice operazione: %s  ", buff);
          printf("valore della stringa buff %s\n", buff);
          tmp = (void *) strtok(buff, " ");

          while(tmp!=NULL){
          printf("valore della stringa tmp %s\n", tmp);


              if(strcmp(tmp,"+")==0 ){
                                    val1 = pop(nuovo);
                                    val2 = pop(nuovo);
                                    push (nuovo, val2+val1);
                                    printf("%.2f + %.2f = %.2f\n", val2, val1, top(nuovo));      
              }
              else if(strcmp(tmp,"-")==0){
                                    val1 = pop(nuovo);
                                    val2 = pop(nuovo);
                                    push (nuovo, val2-val1); 
                                    printf("%.2f - %.2f = %.2f\n", val2, val1, top(nuovo));   
              }
              else if(strcmp(tmp,"*")==0){
                                    val1 = pop(nuovo);
                                    val2 = pop(nuovo);
                                    push (nuovo, val2*val1); 
                                    printf("%.2f * %.2f = %.2f\n", val2, val1, top(nuovo));   
              }
              else if(strcmp(tmp,"/")==0){
                                    val1 = pop(nuovo);
                                    val2 = pop(nuovo);
                                    push (nuovo, val2/val1); 
                                    printf("%.2f / %.2f = %.2f\n", val2, val1, top(nuovo));   
              }               
              else {
                   val = atof(tmp);
                   push(nuovo, val); 
                   printf("top %.2f\n", top(nuovo));                      
              } 
   
          tmp = (void *) strtok(NULL, " ");
                    
          }
          printf("il top alla fine vale %.2f\n",top(nuovo));
          fprintf (fileo, "risultato: %.2f\n", pop(nuovo));
}
funziona o quasi! fgets prende una singola riga del mio file .txt poi strtok prende in esame correttamente i valori solo che il problema è che quando finisce la riga non mi restituisce il risultato ma 0, cioè il mio problema è appunto quando finisce una riga e deve passare alla successiva invece all'ultima riga del mio file restituisce il risultato.

es della stampa con le prime due righe senza risultato e l'ultima con il risultato:
codice:
Codice operazione: 621.4 2 + 6.12 + 12 -
  risultato: 0.00

Codice operazione: 19 2 + 9 + 15 -
  risultato: 0.00

Codice operazione: 30  5  -  7  *  risultato: 175.00