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: 5714
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 ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
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: 5714
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 ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
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