Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - c++ controllo se file txt è vuoto
Forum - C/C++ - c++ controllo se file txt è vuoto

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
carlito00w (Normal User)
Newbie


Messaggi: 10
Iscritto: 20/06/2009

Segnala al moderatore
Postato alle 13:50
Domenica, 21/06/2009
cdt

come faccio ad eseguire un controllo su un file txt, per sapere se è vuoto?

PM Quote
Avatar
Xaratroom (Ex-Member)
Expert


Messaggi: 526
Iscritto: 03/04/2008

Segnala al moderatore
Postato alle 14:17
Domenica, 21/06/2009
Definisci "vuoto".
Se lo apri e non riesci ad eseguire una lettura (per il raggiungimento della fine del file) non sono presenti dati.

PM Quote
Avatar
carlito00w (Normal User)
Newbie


Messaggi: 10
Iscritto: 20/06/2009

Segnala al moderatore
Postato alle 16:55
Domenica, 21/06/2009
puoi farmi un esempio?

PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 17:35
Domenica, 21/06/2009
Mi sembra che devi includere le libbrerie per la lettura e la scrittura iostream e fstream e poi gli dai il percorso dove è salvato il file e poi se è vuoi allora digli vuoto
Codice sorgente - presumibilmente C/C++

  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. if(file==''){
  5. cout << "vuoto";
  6. }


Mi sembra che sia così il codice però non so
ma dispiace ma non so il codice per la lettura del file.

PM Quote
Avatar
Xaratroom (Ex-Member)
Expert


Messaggi: 526
Iscritto: 03/04/2008

Segnala al moderatore
Postato alle 17:41
Domenica, 21/06/2009
Testo quotato

Postato originariamente da LittleHacker:

Mi sembra che devi includere le libbrerie per la lettura e la scrittura iostream e fstream e poi gli dai il percorso dove è salvato il file e poi se è vuoi allora digli vuoto
Codice sorgente - presumibilmente C/C++

  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. if(file==''){
  5. cout << "vuoto";
  6. }


Mi sembra che sia così il codice però non so
ma dispiace ma non so il codice per la lettura del file.


No...
Non è così.
L'esempio non te lo faccio: prova e se non ci riesci posta il codice che hai prodotto.

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 2:30
Mercoledì, 24/06/2009
aprire un file, soprattutto se si è nel dubbio che il file stesso possa esistere o che sia valido, può essere dispendioso in termini di risorse allocate.

Un metodo veloce e sicuro per testare se un file è vuoto consiste nell'usare la funzione ANSI C stat().

uno stralcio di codice per illustrarne il funzionamento:

    
Codice sorgente - presumibilmente C++

  1. void printFileSize(const char *nomefile)
  2. {
  3.     // struct che conterra' le informazioni sul file
  4.     struct stat fileInformation;
  5.  
  6.     // codice di errore
  7.     int e;
  8.  
  9.     // chiamo la funzione stat()
  10.     e = stat(nomefile, &fileInformation);
  11.  
  12.     // controllo eventuali errori
  13.     if (e == -1)
  14.     {
  15.         printf("Error opening %s\n", nomefile);
  16.         return;
  17.     }
  18.  
  19.     // stampo la dimensione del file
  20.     printf("il file %s pesa %d bytes\n", nomefile, fileInformation.st_size);
  21. }



ulteriori informazioni (in inglese) qui: http://linux.die.net/man/2/stat

PM Quote
Avatar
Xaratroom (Ex-Member)
Expert


Messaggi: 526
Iscritto: 03/04/2008

Segnala al moderatore
Postato alle 2:40
Mercoledì, 24/06/2009
Testo quotato

Postato originariamente da TheKaneB:

aprire un file, soprattutto se si è nel dubbio che il file stesso possa esistere o che sia valido, può essere dispendioso in termini di risorse allocate.

Un metodo veloce e sicuro per testare se un file è vuoto consiste nell'usare la funzione ANSI C stat().

uno stralcio di codice per illustrarne il funzionamento:

Codice sorgente - presumibilmente C++

  1. void printFileSize(const char *nomefile)
  2. {
  3.     // struct che conterra' le informazioni sul file
  4.     struct stat fileInformation;
  5.  
  6.     // codice di errore
  7.     int e;
  8.  
  9.     // chiamo la funzione stat()
  10.     e = stat(nomefile, &fileInformation);
  11.  
  12.     // controllo eventuali errori
  13.     if (e == -1)
  14.     {
  15.         printf("Error opening %s\n", nomefile);
  16.         return;
  17.     }
  18.  
  19.     // stampo la dimensione del file
  20.     printf("il file %s pesa %d bytes\n", nomefile, fileInformation.st_size);
  21. }



ulteriori informazioni (in inglese) qui: http://linux.die.net/man/2/stat



E se l'utente è sotto windows ?

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 3:04
Mercoledì, 24/06/2009
su windows la funzione da chiamare è _stat()

si comporta in modo quasi identico, ma dal momento che Windows non supporta alcune delle features di UNIX, alcuni dei campi della struct rimarranno vuoti (come il st_gid).

info: http://msdn.microsoft.com/en-us/library/14h5k7ff(VS.71).aspx

PM Quote
Avatar
Xaratroom (Ex-Member)
Expert


Messaggi: 526
Iscritto: 03/04/2008

Segnala al moderatore
Postato alle 13:40
Mercoledì, 24/06/2009
Testo quotato

Postato originariamente da TheKaneB:

su windows la funzione da chiamare è _stat()

si comporta in modo quasi identico, ma dal momento che Windows non supporta alcune delle features di UNIX, alcuni dei campi della struct rimarranno vuoti (come il st_gid).

info: http://msdn.microsoft.com/en-us/library/14h5k7ff(VS.71).aspx


Quindi per far compilare il mio codice su windows e su linux dovrei "impostare" una compilazione condizionale tramite direttive di precompilazione...

Certamente è più semplice fare in questo modo:
Codice sorgente - presumibilmente C/C++

  1. FILE *fp = fopen ("file", "r");
  2. if (fp == NULL)
  3.               printf("FIle inesistente");
  4. else
  5.               fclose(fp);



oppure in cpp:
Codice sorgente - presumibilmente C/C++

  1. #include <fstream>
  2. ....
  3. ifstream fp ("file", ...);
  4. if (!fp)
  5.               printf("FIle inesistente");
  6. else
  7.               fp.close();



Naturalmente se controlli l'esistenza di un file, probabilmente, intendi leggerne il contenuto.

Ultima modifica effettuata da Xaratroom il 24/06/2009 alle 13:45
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo