Stampa numero di linee di un file di testo in c

di il
1 risposte

Stampa numero di linee di un file di testo in c

Riporto di seguito un piccola programma che dovrebbe visualizzare a video il numero di linee di un generico file di testo, ma purtroppo per me non fa esattamente ciò.
Qualcuno può aiutarmi per favore.
Ringrazio in anticipo.

/*Programma che mi permette di visualizzare a video il numero di linee di cui è composto un
file di testo.
Nota:il file di testo è acquisito tramite i parametri della funzione main*/

#include <stdio.h>
int main (int argc, char *argv[]){

int numero_linee(FILE*);
FILE *inp;
int num_righe;

if(argc <2)
printf("Errato numero di parametri\n");
else {
inp=fopen(argv[1],"r");/*Apertura del file originale.*/

if (inp == NULL) /*controllo che esista */

printf ("\nAttenzione. Errore in apertura del file \n\n");

else{
num_righe=numero_linee(inp);
printf("Il numero di righe del file è:%d\n", num_righe);
}

}

return 0;
}


/*Funzione che mi permette di contare il numero di righe di un file(la linea termina con il carat. '\n'*/

int numero_linee (FILE*inp)
{
int linee=0;
char tmp;
fseek(inp,0,0);/*Permette di portare il puntatore all' inizio del file*/


if(inp!=NULL) /*Se il file aperto non riporta nessun errore..*/
{
while(fscanf(inp,"%c",&tmp)!= EOF)
if (tmp=='\n')
linee++;

}
fclose(inp);

return linee;
}

1 Risposte

  • Re: Stampa numero di linee di un file di testo in c

    Per risolvere il problema, dovresti leggere il file in blocchi, togliere da ogni blocco il carattere LF (0x0A) e contare soltanto i caratteri CR (0x0D). Ma siccoma ci sono anche testi che non rispettano questa regola (formato UNIX), dovresti procedere al contrario. In linea generale, un file che non contiene caratteri CR, è del formato UNIX.

    Giovanni
    ---
    http://www.y2ksw.com/vbulletin
Devi accedere o registrarti per scrivere nel forum
1 risposte