Salve ragazzi ho un problema con il mio codice,in sostanza ho una stringa che rappresenta una espressione elementare del tipo 43+1 oppure 39*20 etc...
ho pensato ad un metodo che la prima volta che viene invocato trasforma la parte a sinistra dell'operazione in double e la restituisce, la seconda volta che viene invocata (con il paramentro esplicito settato a NULL) deve restituire la parte a destra della stringa e settare un puntatore con l'operazione corrispondente(il puntatore è stato passato come secondo input alla funzione), il mio problema è il puntatore che corrisponde all'operazione non mantiene il valore dopo che la funzione ha terminato l'esecuzione vi linko il codice:-)
double calcola(char mesg[MAXLINE]){
char *operazione;
double primo=0,secondo=0;
operazione=(char *)malloc(sizeof(char) * MAXLINE);
primo=tagliaStringa(mesg,NULL);
printf("primo numero:%lf\n",primo);
secondo=tagliaStringa(NULL,operazione);
printf("secondo numero:%lf\n",secondo);
printf("operazione: %s\n",operazione );
return 42; // il return lo farò dopo che sarò riuscito a calcolare correttamente l'espressione
}
double tagliaStringa(char messaggio[MAXLINE],char *operazione)
{
char appoggio[MAXLINE];
static int i=0;
static char salva[MAXLINE],car;
bzero(appoggio,sizeof(appoggio));
if(messaggio!=NULL)
{ strcpy(salva,messaggio);
while(messaggio[i]>='0' && messaggio[i]<='9')
{
strcat(appoggio,&messaggio[i]);
i++;
}
return atof(appoggio);
}
//else
if(salva[i]=='m' && salva[i+1]=='o' && salva[i+2]=='d')
{
operazione="mod";
i=i+2;
}
else
{
car=salva[i];
operazione=&car;
i++;
}
while(salva[i]!='\0')
{
if(salva[i]>='0'&& salva[i]<='9')
{
strcat(appoggio,&salva[i]);
}
i++;
}
bzero(salva,sizeof(salva));
i=0;
return atof(appoggio);
}
grazie mille:)