Lettura Stringhe da file in C

di il
6 risposte

Lettura Stringhe da file in C

Più che un problema, mi servirebbe un consiglio su come utilizzare la funzione fgets per leggere stringhe da file di testo in c. Praticamente, il codice in seguito, legge le stringhe correttamente, l'unico problema che o mi ripete l'ultima stringa più di una volta oppure mi mette dello spazio vuoto.
void leggi_stringa(char string [max])
{
    int i=0;
    FILE *fp;
    fp=fopen("input.txt","r");
    if(fp!=NULL)
    {
        while(!feof(fp))
        {
            if(string!=NULL)
            {
                fgets(string,max,fp);
                printf("%s",string);
            }
            i++;
        }
    }
    else
    {
        printf("errore");
    }
    fclose(fp);
}

6 Risposte

  • Re: Lettura Stringhe da file in C

    Prova a scrivere così
    
    void leggi_stringa(char string [max])
    {
        int i=0;
        FILE *fp;
        fp=fopen("input.txt","r");
        if(fp!=NULL)
        {
            fgets(string,max,fp);
            while(!feof(fp))
            {
                i++;
                printf("%s",string);
                fgets(string,max,fp);
            }
        }
        else
        {
            printf("errore");
        }
        fclose(fp);
    }
    
  • Re: Lettura Stringhe da file in C

    Grazie mille per la risposta ma da' comunque lo stesso problema. Il testo contiene le seguenti stringhe:
    "Milano si trova in Lombardia"
    "Marco e Paolo sono fratelli"
    "Napoli e Salerno sono province della Campania"
    Ma allo stesso modo mi legge solo le prime due, tranne l'ultima.
    void leggi_stringa(char string [max])
    {
        int i=0;
        FILE *fp;
        fp=fopen("C:\\Users\\User\\CLionProjects\\prova_esercizio\\input.txt","r");
        if(fp!=NULL)
        {
            fgets(string,max,fp);
            while(!feof(fp))
            {
                i++;
                printf("%s\n",string);
                fgets(string,max,fp);
                }
    
        }
    
        else
        {
            printf("errore");
        }
        fclose(fp);
    }
  • Re: Lettura Stringhe da file in C

    Tutte li linee devono avere un ritorno a capo. Anche la terza.
  • Re: Lettura Stringhe da file in C

    Grazie mille in questo momento, va tutto come deve. Starò più attento su questi particolari!
  • Re: Lettura Stringhe da file in C

    Certo ... e ricorda che dalla feof ottieni un risultato solo DOPO che è avvenuta una lettura, non prima. Quindi la fgets deve precedere sempre la feof, non il contrario.
  • Re: Lettura Stringhe da file in C

    Ah vabbene poichè ho utilizzato sempre questo metodo e quindi ogni qualvolta che il ciclo scandiva il file, in seguito avvenisse la lettura delle stringhe con la funzione fgets. Grazie mille seguirò il consiglio!
Devi accedere o registrarti per scrivere nel forum
6 risposte