Salve a tutti. Devo leggere un file di questo tipo:
codice:
 3    + 9        4   *        2     123     -     27
So a priori che ogni operazioni ha 3 fattori: operando1 operazione operando2.
Devo naturalmente leggere tralasciando gli spazi e inserire queste operazioni in una matrice di char, in questo modo:
codice:
     c1   c2    c3
r1: 3     +     9
r2: 4     *     2
r3: 123  -     27
Il codice che uso per leggere le stringhe è questo:
codice:
int i=0, j=0, k=0, n=1;
char stringa[MAXOP];
while(!feof(fpin)){
    fscanf(fpin, "%s", stringa);
    if((n%3)==0){
        k++;
        j=0;
    }
    for(i=0; i<strlen(stringa); i++){
        str[k][j]=stringa[i];
        printf("%c %d\n", str[k][j], n);
        j++;
    }
    n++;
}
return n/3;
Usando la fscanf ho notato che gli spazi li omette in automatico quindi faccio le seguenti operazioni:
1. Leggo la stringa e la inserisco in una variabile temporanea
2. Se n (numero di stringhe lette) è multiplo di 3 posso andare alla riga successiva
3. Scannerizzo la stringa letta (può essere un solo carattere, come 3, ma anche 123, quindi tre caratteri) e li inserisco nella matrice, alla riga k-esima
4. Aumento n

Con quell'output di prova [printf("%c %d\n", str[k][j], n)] i numeri si trovano tutti. Devo restituire il numero di operazioni lette quindi ritorno n/3. E si trova.
Ma quando vado a stampare con questo codice:
codice:
void Stampa_Operazioni(char ops[][NCAR], int n)
{
    int i;


    for(i = 0; i < n; i++)
        printf("%s\n", ops[i]);
}
Mi esce in output:
3+
94*
2123-

Qualche consiglio? Sto codice che ho scritto mi sembra orrendo, ma non mi è venuto in mente altro.