Voila je voudrais savoir comment compter le nombre de lignes dans un fichier .txt .
Il faut que j'utilise quelle boucle ? et faut-il utiliser "EOF" ?
Merci d'avance de m'aider.
Version imprimable
Voila je voudrais savoir comment compter le nombre de lignes dans un fichier .txt .
Il faut que j'utilise quelle boucle ? et faut-il utiliser "EOF" ?
Merci d'avance de m'aider.
Salut,
Tu peux lire les caractères présents dans ton fichier un à un avec la fonction de la bibliothèque standard fgetc jusqu'à ce que tu rencontres la fin de fichier, puis tu comptes les occurences du caractère de fin de ligne. Fais de ton mieux et poste ton code si tu as des soucis.
Meilleures salutations
Thierry
Voila le source que j'ai fait mais ca ne marche pas :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 #include <stdlib.h> #include <stdio.h> int main (void) { char ch[32]; FILE * fichier; int i,nmots; nmots=0; fichier = fopen ("dico.txt") , "r"); while (fgetc(ch[i],32,fichier)!=EOF) { nmots ++; } printf ("Il y a %d mots",nmots); system ("pause"); return 0; }
Normal, tu cherches à utiliser fgetc() comme un fgets().
Et là prochaine fois que "ça marche pas", documente un peu plus, s'il te plait, nous ne sommes pas devins...
2 remarques:
- (mineure) il serait bon de respecter l'indentation
- (majeure) il FAUT faire un fclose()
Par ailleurs, le code
compile ?Code:
1
2 fichier = fopen ("dico.txt") , "r");
Je t'invite tout d'abord à consulter le manuel de fgetc: http://man.developpez.com/man3/fgetc.3.php. Cette fonction ne prend qu'un paramètre de type pointeur sur FILE, et retourne un entier.
Ensuite, tu avais dit que tu voulais compter le nombre de lignes présentes dans le fichier. Dans ton code, tu comptabilises le nombre de caractères.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #include <stdlib.h> #include <stdio.h> int main (void) { FILE * fichier; int c; int nb_lignes = 0; fichier = fopen ("dico.txt", "r"); /* Il faut TOUJOURS contrôler le retour de fopen */ if (fichier == NULL) { /* Traitement en cas d'erreur*/ } while ((c = fgetc(fichier)) != EOF) { if (c == '\n') { ++nb_lignes; } } printf ("Il y a %d lignes", nb_lignes); fclose(fichier); return EXIT_SUCCESS; }
Meilleures salutations
Thierry
Ce n'est pas une remarque mineure!!! La présentation du code est quelque chose de très sérieux.Citation:
Envoyé par Bayard
Thierry
Là, tu comptes les caractères. J'avais compris que tu voulais compter les lignes. Pour ça, il faut lire le caractère puis le tester. Si il vaut \n, c'est qu'on vient de terminer une ligne.Citation:
Envoyé par Dav-D
EDIT : Grillaid par mujigka. Tu lui dis tout, c'est pas drôle ...Code:
1
2
3
4
5 int c; while ((c = fgetc(fp)) != EOF) { /* je te laisse compléter... */ }
Tu as raison, la prochaine fois, je ferai plus attention...Citation:
Envoyé par Emmanuel Delahaye
Thierry
Merci de votre aide.
En effet je confond l'utilisation du fgets et du fgetc.
Je suis nouveau sur le forum et je n'avais pas vu la présence de la fonction de mis en page du code source.
Je ferais mieu lors de prochain messages promis.
Pourriez-vous mettre le Tag résolu (si c'est OK bien sur) ?