Extraction d'un mot dans un fichier en C
elwess
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonsoir mes amis,
j'ai un fichier .txt,et je veut faire un programme qu'a chaque fois trouve le mot alors,il fait le copie de ce mot et le mettre dans un variable par exemple
fichier texte
dans cet exemple je veut chercher le mot alors puis extraire le mot qui le suive,comme "mot"et "nombre"
je pense qu'il faut utiliser fseek et strcpy,mais je ne sais pas comment faire.
merciii bcp
j'ai un fichier .txt,et je veut faire un programme qu'a chaque fois trouve le mot alors,il fait le copie de ce mot et le mettre dans un variable par exemple
fichier texte
si a et b alors mot si x et y alors nombre
dans cet exemple je veut chercher le mot alors puis extraire le mot qui le suive,comme "mot"et "nombre"
je pense qu'il faut utiliser fseek et strcpy,mais je ne sais pas comment faire.
merciii bcp
A voir également:
- Extraction d'un mot dans un fichier en C
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier bin - Guide
- Fichier rar - Guide
- Ouvrir un fichier .dat - Guide
2 réponses
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,
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
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...