Salve, come da titolo avrei un problema...

ho un file con all'interno i seguenti dati da acquisire :

codice:
3    + 9
        4   *        2
     123     -     27
messi così in modo casuale. Li ho acquisiti e memorizzati in array di stringhe, ognuna delle quali contiene una riga (ho usato questo tipo di acquisizione perché il compito richiedeva di farlo in questo modo). Adesso il mio problema è che devo creare una funzione
codice:
void Esegui_Operazioni(char [][NCAR], int [], int);
che "...prende in ingresso la matrice di char contenente le operazioni, il
vettore di interi destinato a contenere i risultati di ogni operazione e il numero di operazioni (righe
della matrice) da effettuare. Effettua le operazioni, determinando il primo operando, l'operazione
e il secondo operando (si deve effettuare una conversione da ascii a numerico) e immagazzina il risultato nel vettore dei risultati."

Ecco ciò che mi è uscito fuori :

codice:
void Esegui_Operazioni(char str[][NCAR], int r[], int n)
{
    int i=0,j=0;
    int op1=0,op2=0, opr=0;
    char *temp1,*temp2;
    
    for(i=0;i<=n-1;i++){
      
        op1=0; 
        op2=0; 
        opr=0;
        for(i=0;i<=n-1;i++){
      
        op1=0; 
        op2=0; 
        opr=0;
        for(j=0;j<NCAR;j++){
            
            if(isdigit(str[i][j])!=0){
                 if(op1!=0 && op2==0){
                    op2=str[i][j]-48;
                }else{
                    if(op1==0 && op2==0){
                    op1=str[i][j]-48;
                    }
                }
            }
            if(str[i][j]==45 || str[i][j]==42 || str[i][j]==47 || str[i][j]==43){
            opr=str[i][j];    
            }
        }
        if(opr==43){
            r[i]=op1+op2;
            }else{
            if(opr==45){
                r[i]=op1-op2;
            }else{
                if(opr==42){
                    r[i]=op1*op2;
                    }else{
                    if(opr==47){
                        r[i]=op1/op2;
                        }
                    }
                }
            }
        //printf("       opr=%d op1=%d op2=%d\n",opr,op1,op2);
    }
}
}
Il problema viene fuori quando c'è da acquisire dalle stringhe un numero con più di 1 cifra (come è logico che sia da come ho scritto il codice), vorrei sapere, se è possibile, un vostro parere su come acquisire i numeri 123 e 27 nell'ultima stringa...