infile.txt
codice:
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 *
programma.c
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;
}
In mezzo ho commentato delle istruzioni per vedere se veramente potevo trasformare il token in double e 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);
}
Con questo codice ho provato ad identificare il token ma non funziona.
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?