Compter les lignes d'un fichier en C

[Fermé]
Signaler
-
 dordouf -
Bonjour,

Je ne comprends pas pourquoi ma fonction ne marche pas.
Je vous explique , j'ai un fichier et et je dois compter le nombre de lignes . Voici ma fonction:

int count_line(FILE* fichier)
{
int line =0;
while ((fgetc(fichier) != EOF ))
{
if((fgetc(fichier))== '\n')
{
line++;
}
}
return line;
}

L'ouverture et la fermeture du fichier se font dans le main.
Le resultat est égal à 0 à chaque fois.

Si vous avez une solution.

Merci

2 réponses

Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 776
Bonjour,
Tout d'abord, il ne faut pas utiliser fgetc(fichier) deux fois pour compter une ligne.
Je m'explique :
Il faudrait plutôt faire : while((c=fgetc(fichier))!=EOF) ...
Et après : if (c=='\n')...
Ensuite, le programme me paraît correct.
Pourrais-tu donner le main également ?
Cdlt,
#include <stdio.h>
#include <stdlib.h>
#define max 1000

int count_caract(FILE* fichier)
{
int a,i=0;
while(a!=EOF)
{
a=fgetc(fichier);
i++;
}
return i;
}

int count_line(FILE* fichier)
{
int i=0;
int c =0;

while((c=fgetc(fichier))!=EOF)
{
if(c=='\n')
{
i++;
}
}

return i;
}

int main(int argc , char** argv)
{
if(3>argc)
{
printf("Il manque des arguments");
return 1;
}

FILE* fichier1=NULL; //Declaration d'un fichier et initialisation à NULL
FILE* fichier2=NULL;
int caract,caract2,i,nb = 0;
int nbl;
char tab[max];
char* chaine;

fichier1=fopen(argv[1],"r"); //Ouverture d'un fichier en mode lecture

if(fichier1 != NULL)
{
printf("\n---Voici le fichier1---\n");
while(caract!=EOF)
{
caract=fgetc(fichier1); //Recupération caractère par caractère du fichier1 jusqu à la fin
printf("%c",caract);
i++;
}
printf("\n---Fin du fichier1---\n");
fclose(fichier1);
}
else
{
printf("Fichier introuvable");
fclose(fichier1);
}
fichier2=fopen(argv[2],"r");

if(fichier2 != NULL)
{
printf("\n---Voici le fichier2---\n");
while(caract2!=EOF)
{
caract2=fgetc(fichier2);
printf("%c",caract2);
}
printf("\n---Fin du fichier2---\n");
fclose(fichier2);
}
else
{
printf("Fichier Introuvable");
fclose(fichier2);
}
fichier1=fopen(argv[1],"r");
nb=count_caract(fichier1);
nbl=count_line(fichier1);
fclose(fichier1);
printf("Il y a %d caracteres\n",nb);
printf("Il y a %d lignes",nbl);
return 0;
}