Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [C]problema con strtok

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    205

    [C]problema con strtok

    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

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.