Leggere float da file .txt

di il
8 risposte

Leggere float da file .txt

Non riesco a capire perchè non funziona questo programma che dovrebbe leggere da un file questa frase:
1T 0.40 tttt

Il programma è il seguente:


#include <stdio.h>
#include <stdlib.h>
#define N 10


int main()
{
char parola1[4], parola2[15];
float valore[3];
int i;
FILE*f;
f=fopen("/home/antonio/Scrivania/MYFile.txt","r");
if(f==NULL){
printf("ERRORE: impossibile aprire il file desiderato");
return-1;
}

fscanf(f,"%s%f%s",parola1, valore, parola2);
printf("%s %0.2f %s",parola1, valore, parola2);

fclose(f);
return 0;
}


**Sul terminale mi viene scritto soltanto "1T 0.00" non riesco a capire perchè il float lo legge come 0.00 e perchè non legge la stringa finale!

8 Risposte

  • Re: Leggere float da file .txt

    Ciao,
    veramente
    float valore[3]
    non è un float ma un array di float...
  • Re: Leggere float da file .txt

    Si hai ragione!!

    La mia intenzione era di fare più di una frase simili a quella una sotto l'altra e poi fare un ciclo che le leggesse tutte.

    Forse sto sbagliando io a procedere...
  • Re: Leggere float da file .txt

    Beh allora devi usare valore[0] nella fscanf e nella printf. Cioè non devi passare tutto l'array ma solo il singolo float dove vuoi memorizzare quanto leggi.
  • Re: Leggere float da file .txt

    Suggerisco di utilizzare fgets() al posto di fscanf().
    Con fgets() leggi la riga intera che poi vai ad analizzare e a splittare da te nelle varie sottostringhe/campi, compreso il campo float che trasformerai da stringa a float tramite la atof().
  • Re: Leggere float da file .txt

    Minomic --> avevo già tentato di fare quello che mi hai suggerito (più per prova che per intenzione;)), solo che non funziona perchè mi da sempre "segment fault"...:/

    candaluar --> proverò a usare anche la fgets() ma penso che sia più scomoda per quello che devo fare dopo...mi farebbe piacere riuscire a venirne fuori con la fscanf()!!
  • Re: Leggere float da file .txt

    Trovato l'errore: mancava la & davanti al float.

    Questo codice funziona:
    
    #include <stdio.h>
    #include <stdlib.h>
    #define N 10
    
    
    int main()
    {
        char parola1[4], parola2[15];
        float valore;
        FILE *f;
        f=fopen("MYFile.txt","r");
        if(f==NULL)
        {
            printf("ERRORE: impossibile aprire il file desiderato");
            return -1;
        }
    
        fscanf(f,"%s %f %s", parola1, &valore, parola2);
        printf("%s %0.2f %s",parola1, valore, parola2);
    
        fclose(f);
        return 0;
    }
    
  • Re: Leggere float da file .txt

    Grazie mille
    Ora funziona tutto
  • Re: Leggere float da file .txt

    Prego!

Devi accedere o registrarti per scrivere nel forum
8 risposte