Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Contare numero di string con fgets()
Forum - C/C++ - Contare numero di string con fgets()

Avatar
Dante.cpp (Normal User)
Pro


Messaggi: 65
Iscritto: 23/11/2011

Segnala al moderatore
Postato alle 13:59
Domenica, 26/02/2012
Ho la necessita di scrivere una funzione che: conti il numero stringhe, di dimensione data, all'interno di un file; Ogni stringa finisce con '\n'.
Io ho pensato una cosa del genere, ma non riesco ad accordarmi con il mio caro amico gpp! xD
Codice sorgente - presumibilmente C/C++

  1. FILE *pfile;
  2. short cont = 0;
  3.  
  4. while(fgets (stringa, lungstring, pfile) != EOF)
  5. {
  6.         pfile = fopen("filesempio.txt", "r");
  7.                 fgets (stringa, lungstring, pfile);                    
  8.         fclose(pfile);
  9.         cont++;
  10. }



che mi proponete?

Ultima modifica effettuata da Dante.cpp il 26/02/2012 alle 14:01
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 14:23
Domenica, 26/02/2012
Prima di tutto, la open si fa all'inizio e la close alla fine, *fuori* dal ciclo.

E poi, perché due fgets?

Ultima modifica effettuata da nessuno il 26/02/2012 alle 14:24


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Dante.cpp (Normal User)
Pro


Messaggi: 65
Iscritto: 23/11/2011

Segnala al moderatore
Postato alle 15:11
Domenica, 26/02/2012
non so, è la prima volta che ho a che fare con queste funzioni, su internet ho trovato sono roba teorica e pochi esempi, come posso fare a dirli di leggere le stringhe terminanti con new-line, sinché non finisce il file?

la soluzione penso abbia un aspetto simile:
Codice sorgente - presumibilmente C/C++

  1. FILE *pfile;
  2. short cont = 0;
  3. pfile = fopen("filesempio.txt", "r");  
  4. while(/*???*/ != EOF)
  5. {    
  6.    fgets (stringa, lungstring, pfile);                
  7.    cont++;
  8. }
  9.  
  10. fclose(pfile);

  

Ultima modifica effettuata da Dante.cpp il 26/02/2012 alle 15:12
PM Quote
Avatar
dmr (Normal User)
Pro


Messaggi: 141
Iscritto: 04/01/2012

Segnala al moderatore
Postato alle 16:15
Domenica, 26/02/2012
Ciao, così dovrebbe andare:

Codice sorgente - presumibilmente C++

  1. int conta(const char *nomeFile)
  2. {
  3.   int contatore=0;
  4.   char str[100];
  5.   FILE *fp=fopen(nomeFile,"r");
  6.   if(fp!=NULL)
  7.   {
  8.     while(!feof(fp))
  9.     {
  10.       fgets(str,100,fp);
  11.       ++contatore;
  12.     }
  13.   }
  14.   fclose(fp);
  15.   return contatore;
  16. }


Ultima modifica effettuata da dmr il 26/02/2012 alle 16:44


Principali interessi: Compilatori e generatori di parser.
PM Quote
Avatar
Dante.cpp (Normal User)
Pro


Messaggi: 65
Iscritto: 23/11/2011

Segnala al moderatore
Postato alle 16:54
Domenica, 26/02/2012
grazie mille, proprio ora leggevo della funzione feof()...

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 18:11
Domenica, 26/02/2012
Roba teorica?

Bella questa ...

Guarda che si parte dalla teoria ... è *necessario* studiare la parte teorica prima di iniziare a programmare ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Dante.cpp (Normal User)
Pro


Messaggi: 65
Iscritto: 23/11/2011

Segnala al moderatore
Postato alle 21:33
Domenica, 26/02/2012
non ho detto d'aver trascurato la teoria, semplicemente m'era necessario qualche esempio per vedere, in che modo utilizzare al meglio le funzioni e con quali altre farle interagire ad es. feof() :k:

PM Quote