infile.txt
programma.ccodice:621.4 2 + 6.12 + 12 - 19 2 + 9 + 15 - 14 488 + 6 + 10 - 12 2 + 232 + 12 - 916 2 + 13 + 12 - 22 5 + 700 + 32 - 19 2 + 1 + 15 - 30 5 - 7 *
In mezzo ho commentato delle istruzioni per vedere se veramente potevo trasformare il token in double e funziona!codice:#include <stdlib.h> #include <stdio.h> #include <string.h> int main(void){ char mio_buf[100]; char* tmp_string[10]; char* prr[10]; FILE *file_in_ptr; int index; double val; if((file_in_ptr=fopen("infile.txt","r"))==NULL)exit(1); while(fgets(mio_buf, 100, file_in_ptr)){ index=0; if(mio_buf[0]!='\n'){ tmp_string[index]=strtok(mio_buf, " "); printf("token: %s\n", tmp_string[index]); //stampa il primo token della riga //di sicuro è un numero //val=atof(tmp_string[index])+0.1; //printf("double + 0.1 = %.2f\n", val); while((tmp_string[index++]=strtok(NULL, " "))!=NULL) { printf("TOKEN: %s\n", tmp_string[index-1]); } //stampa il resto } } fclose(file_in_ptr); printf("\n"); system("PAUSE"); return 0; }
Con questo codice ho provato ad identificare il token ma non funziona.codice:if(strncmp(tmp_string[index-1],"-",0)==0) printf("sottrazione\n"); else if(strcmp(tmp_string[index-1],"+")==0) printf("addizione\n"); else if(strcmp(tmp_string[index-1],"*")==0) printf("moltiplicazione\n"); else if(strcmp(tmp_string[index-1],"/")==0) printf("divisione\n"); else { //dovrebbe essere un numero val=atof(tmp_string[index])+0.1; printf("double + 0.1 = %.2f\n", val); }
Ho provato anche a passare il token come paramentro in un'altra funzione così da non incasinare nulla ma faccio danno lo stesso.
Mi sapreste aiutare?

Rispondi quotando
, ora la mia calcolatrice in notazione polacca inversa funziona!