Bonjour tout le monde,
est ce qu'il ya un moyen pour savoir la fin d'une ligne dans un fichier texte utilisant le langage C (des fonctions par exemple)
Bonjour tout le monde,
est ce qu'il ya un moyen pour savoir la fin d'une ligne dans un fichier texte utilisant le langage C (des fonctions par exemple)
Tu sais qu'une ligne est finie quand il y a un \n dans les données récupérées.
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.
mais le probleme c'est que je lis mot par mot.
Salut,
Mais pour lire mot par mot, tu effectues bien un traitement caractère par caractère, non ?
Montre nous ton code, ça sera plus facile![]()
voila le code j'esai de lire un mot puis un caractere par ce que je veut copier le moiter dans un fichier et puis le reste dans un autre.
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 void parc_fich(char nam_rep[20],char n_module[20],FILE *ff) { FILE *inn,*temp; char c; char str1[10000]; inn=NULL; //find_file_of_module retourne le fichier que je veut lire inn=fopen(find_file_of_module(nam_rep,n_module),"r"); if(inn){ while(!feof(inn)){ fscanf(inn,"%s",str1); fscanf(inn,"%c",&c); fprintf(ff,"%s",str1); fprintf(ff,"%c",c); if(!strcmp(str1,"module")) { fscanf(inn,"%s",str1); fscanf(inn,"%c",&c); fprintf(ff,"%s",str1); fprintf(ff,"%c",c); if(!strcmp(n_module,str1)) { while(strcmp("endmodule",str1)){ fscanf(inn,"%s",str1); fscanf(inn,"%c",&c); if(!strcmp("endmodule",str1)) {temp=fopen("temp","w"); while(!feof(inn)){ fscanf(inn,"%c",&c);fprintf(temp,"%c",c); } break;} fprintf(ff,"%s",str1); fprintf(ff,"%c",c); } break; } } } } else printf("fichier %s n'existe pas",find_file_of_module(nam_rep,n_module)); fclose(inn); }
Quelques remarques sur le code :
- Ceci ne permet pas de détecter la fin d'un fichier :
Les formes canoniques sont :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 while(!feof(fp)) { /* instructions */ }et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 while((c = fgetc(fp)) != EOF) { /* instructions */ }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 while(fgets(s, sizeof s, fp) != NULL) { /* instructions */ }- Ce n'est pas une bonne idée d'utiliser fscanf() : comportement indéterminé si le fichier n'est pas correctement formaté, pas de contrôle de la taille de la chaine saisie.
- Je ne comprends pas la logique du code : pourquoi ces instructions break ?
- Le code n'est pas complet, on ne peut pas le compiler pour le tester
- Comment est justifiée la taille donnée à str1 ?
Si un mot est terminé par un \n, c'est une fin de ligneEnvoyé par radouane_as
Mais ce serait plus simple de lire ligne par ligne avec fgets(), c'est fait pour. Ensuite, on extrait les mots...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if (strchr(mot, '\n') != NULL) {
Partager