Extraction d'un mot dans un fichier en C
Fermé
elwess
Messages postés
5
Date d'inscription
dimanche 30 août 2009
Statut
Membre
Dernière intervention
14 janvier 2011
-
13 janv. 2011 à 23:29
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 14 janv. 2011 à 23:38
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 14 janv. 2011 à 23:38
A voir également:
- Extraction d'un mot dans un fichier en C
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
- Ouvrir un fichier .bin - Guide
- Comment ouvrir un fichier docx ? - Guide
2 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
14 janv. 2011 à 08:36
14 janv. 2011 à 08:36
Bonjour,
Je vois pas à quoi va te servir fseek.
Ce qu'il te faut utiliser sont les fonctions, fgets, strstr
Tu fais une boucle while pour lire tout le fichier.
Tu lis chaque ligne avec fgets (en considérant que chaque ligne aura un nombre max de caractères).
Tu utilises strstr() pour savoir si "alors" est contenu dans la phrase. S'il l'est alors strstr te renverra un pointeur sur "alors ....". Il ne te reste plus qu'à décaler le pointeur de 6 caractères sur la droite pour récupérer le contenu après "alors ".
Cdlt,
Je vois pas à quoi va te servir fseek.
Ce qu'il te faut utiliser sont les fonctions, fgets, strstr
Tu fais une boucle while pour lire tout le fichier.
Tu lis chaque ligne avec fgets (en considérant que chaque ligne aura un nombre max de caractères).
Tu utilises strstr() pour savoir si "alors" est contenu dans la phrase. S'il l'est alors strstr te renverra un pointeur sur "alors ....". Il ne te reste plus qu'à décaler le pointeur de 6 caractères sur la droite pour récupérer le contenu après "alors ".
Cdlt,
elwess
Messages postés
5
Date d'inscription
dimanche 30 août 2009
Statut
Membre
Dernière intervention
14 janvier 2011
14 janv. 2011 à 12:40
14 janv. 2011 à 12:40
merci beaucoup pour votre réponse,j'ai fait un programme comme tu m'a dit mais toujours j'ai un erreur.j'ai besoin de votre aide pour trouver cette erreur
le fichier texte
d.txt
le programme
le resultat d'execution
merci beaucoup pour votre aide
le fichier texte
d.txt
Fait -Fait france -Fait paris -Fait italie -Fait europe regle R1# Si paris alors france R2# Si france alors europe R3# Si venis alors italie R4# Si italie alors europe
le programme
#include<stdio.h> #include<stdlib.h> #include<string.h> int main(void) { FILE *fp; char mot[BUFSIZ]; char buffer[BUFSIZ]; fp=fopen("d.txt","r"); if(fp==NULL) { fputs("erreur à l'ouverture du fichier\n",stderr); return EXIT_FAILURE; } while(fgets(buffer, sizeof(buffer),fp)) { char *c=strchr(buffer,'\n'); if(c!=NULL) { *c='\0'; } if((strstr(buffer,"alors")==0)) { fseek(fp,6,SEEK_CUR); fgets(mot,100,fp); puts(mot); } } fclose(fp); return 0; }
le resultat d'execution
-Fait france -Fait italie R1# Si paris alors france R1# Si paris alors france
merci beaucoup pour votre aide
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
Modifié par fiddy le 14/01/2011 à 23:41
Modifié par fiddy le 14/01/2011 à 23:41
Tu utilises fseek, alors que j'ai dit qu'il ne fallait pas l'utiliser...
Ensuite tu rutilises fgets après. Ca ne peut pas marcher.
Et, il ne vaut pas mettre de strchr('\n'). Cette astuce marche lorsque tu lis stdin.
Mon précédent post te donnait l'algorithme.
Cela donne :
PS : et en plus tu fais des double posts...
Ensuite tu rutilises fgets après. Ca ne peut pas marcher.
Et, il ne vaut pas mettre de strchr('\n'). Cette astuce marche lorsque tu lis stdin.
Mon précédent post te donnait l'algorithme.
Cela donne :
while(fgets...) { char*p=strstr(...); if(p) { puts(p[6]); } }
PS : et en plus tu fais des double posts...