Salve a tutti! stavo cercando di implementare una calcolatrice calcolatrice RPN basata su stack per un progetto scolastico, ma sono un po' bloccato. sono molto alle prime armi in c come potete vedere dal codice. Questo è quanto ho scritto:
codice:
int parsifica(char * stringa,float * risultato){
    
    if(stringa!=NULL){
        char * s;
        char * buffer=malloc(STRLEN*sizeof(char));
        float (*puntfunz) (float a,float b);
        dd_stack * stack=new_stack();
        if(DEBUG)printf("stack creato e var inizializzate\n");
        for(stringa;*stringa!='\n'||*stringa!='\0';stringa++){
            if(DEBUG)printf("trovato %c\n",*stringa);
            s=stringa;
            if(*stringa=='+'||*stringa=='-'||*stringa=='*'||*stringa=='/'){
                if(DEBUG)printf("trovato operatore: %c\n",*stringa);
                switch (*stringa){
                    case '+':
                        puntfunz = somma;
                        break;
                    case '-':
                        puntfunz = sottrai;
                        break;
                    case '*':
                        puntfunz = moltiplica;
                        break;
                    case '/':
                        puntfunz = dividi;
                        break;
                }
                push(stack,puntfunz(pop(stack),pop(stack)));
            }
            if(*stringa == ' '){
                if(DEBUG)printf("trovato 1 spazio numero in buffer %s\n",buffer);
                push(stack,(float)atof(buffer));
                if(DEBUG)printf("effettuata push di %f\n",(float)atof(buffer));
                free(buffer);
                buffer=malloc(STRLEN*sizeof(char));
            }
            else{
                if(DEBUG)printf("inserisco in buffer\n");
                *buffer=*stringa;
                if(DEBUG)printf("inserito in buffer\n");
                buffer++;
                if(DEBUG)printf("puntatore a buffer aumentato\n");
            }
        }
        *risultato=pop(stack);
        return 0;
    }
    else{
        fprintf(stderr,"errore nella stringa di input\n");
        return 1;
    }
}
Per eseguirla faccio così:
codice:
int main(int argc, char *argv[])
{

    float * a;
    parsifica("1 2 + 3 * \n",a);
    printf("%f\n");
    system("pause");


}
il problema è che va in esecuzione, non prende gli input e crasha.
Per chi fosse così gentile da voler vedere tutto il codice lo trovate qui.
mi dareste una mano a venirne a capo che sono prossimo alla follia? vi ringrazio sentitamente.