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.
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
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Voila le source que j'ai fait mais ca ne marche pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
2 remarques:
- (mineure) il serait bon de respecter l'indentation
- (majeure) il FAUT faire un fclose()
Par ailleurs, le code
compile ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Ce n'est pas une remarque mineure!!! La présentation du code est quelque chose de très sérieux.Envoyé par Bayard
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
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.Envoyé par Dav-D
EDIT : Grillaid par mujigka. Tu lui dis tout, c'est pas drôle ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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...Envoyé par Emmanuel Delahaye
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
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) ?
Partager