Compter les lignes d'un fichier en C

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

2 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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,
    0
  2. dordouf
     
    #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;
    }
    0