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   -
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
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:

2 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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,
0
elwess Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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
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
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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 :
while(fgets...) {  
   char*p=strstr(...);  
   if(p) {  
      puts(p[6]);  
   }  
}  

PS : et en plus tu fais des double posts...
0