PDA

View Full Version : [C] Apro un file di testo .txt: come verifico se è vuoto??


matrix866
15-01-2012, 21:32
Ciao a tutti. Sto studiando il C e all'apertura di un file di testo .txt per
verificare se esiste uso l'identificatore NULL.
Mi chiedevo e come faccio, nel momento in cui apro un file (quindi esiste) a vedere se è vuoto?

Grazie anticipatamente.

wingman87
15-01-2012, 21:54
Guarda l'esempio in questa pagina:
http://www.cplusplus.com/reference/clibrary/cstdio/ftell/

mesonepigreco
15-01-2012, 22:51
Se hai aperto il file in lettura puoi verificare se fscanf ti da EOF (End Of File):
più o meno così


FILE * fp = fopen("nomefile.txt", "r");
char[100] primaparola;
if (fscanf(fp, "%s", primaparola) == EOF) {
// Il file è vuoto
}


In genere però EOF si usa per stabilire se si è giunti alla fine del file
lo si usa in un ciclo:
per esempio:

while (fscanf(fp, "%s", &Variabile) != EOF) {
// Questo codice viene eseguito fin quando il file non è finito
}

matrix866
15-01-2012, 23:09
Se hai aperto il file in lettura puoi verificare se fscanf ti da EOF (End Of File):
più o meno così


FILE * fp = fopen("nomefile.txt", "r");
char[100] primaparola;
if (fscanf(fp, "%s", primaparola) == EOF) {
// Il file è vuoto
}


In genere però EOF si usa per stabilire se si è giunti alla fine del file
lo si usa in un ciclo:
per esempio:

while (fscanf(fp, "%s", &Variabile) != EOF) {
// Questo codice viene eseguito fin quando il file non è finito
}


Grazie, non ci avevo pensato :)

clockover
16-01-2012, 01:28
Io utilizzerei più il metodo dell'esempio postato da wingman87

fseek(file, 0, SEEK_END);
long size = ftell(file);

e ovviamente se size = 0 il file è vuoto