Compter les lignes d'un fichier en C
dordouf
-
dordouf -
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
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
A voir également:
- Compter le nombre de ligne d'un fichier en c
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Partage de photos en ligne - Guide
- Fichier rar - Guide
2 réponses
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,
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;
}
#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;
}