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
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
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,
0
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
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
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 :
while(fgets...) {  
   char*p=strstr(...);  
   if(p) {  
      puts(p[6]);  
   }  
}  

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