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?