Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027

    [C] domanda semplice su funzione fopen

    Scusate se vi tedio con una domandina cosi semplice, ma sto cercando di imparare c e sono un po fermo...

    questo è il mio file .c:

    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
    FILE *fp;
    char str[1000];
    int i=0;
    fp=fopen("elenco.dat","r");
    do
    {
    fscanf (fp, "%s",str);
    printf ("%s\n",str);
    }while (!feof(fp));
    }

    il file elenco.dat contiene alcune stringhe del tipo:

    cognome*nome*eta|
    cognome2*nome2*eta2|

    il problema è che il file funziona ma mi stampa a video 2 volte l'ultima stringa del file.

    Sapete dirmi perchè?

    Grazie ciao

  2. #2

  3. #3
    riporto quello che ti interessa:

    PROBLEMI CLASSICI

    MI SCRIVE UN RECORD IN PIU'
    se si fa un output all'interno di un ciclo con controllo feof()
    feof restituira' VERO solo DOPO aver letto almeno una volta oltre al
    file.. questo vuol dire che se stampate una variabile,o una struttura
    all'interno di questo ciclo stamperete 2 volte l'ultima.

    SOLUZIONE mettere un if feof(*FILE)break; appena dopo la prima lettura
    che puo' generare errore.

    ESEMPIO:


    codice:
    while(!feof(input)){
    fread(&a,1,sizeof(char),input);
    if feof(input)break;
    putchar(a);
    };

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.