Se connecter avec
S'enregistrer | Connectez-vous

Rechercher un mot dans une phrase

Dernière réponse : dans Programmation

Voila je vous explique mon probleme.
Je dois refaire la fonction grep en C.
Le but est donc de rechercher un mot donné et d'afficher toutes les lignes contenant ce mot.
Pour faire ceci j'ai qq fonctions:

prendre: recupere les lettres une par une dans mon fichier choisi
consulter: consulte la lettre prise

Alors voila ce que j'ai fait.

  1. void grep2(Flot flot)
  2. {
  3.  
  4. int nb;
  5. char fichier[50];
  6. char *buffer;
  7. char *phrase;
  8. char *mot;
  9.  
  10.  
  11. printf("Quel fichier\n>>");
  12. scanf("%s",fichier);
  13. printf("Quel mot voulez vous rechercher ?\n");
  14. scanf("%s",mot);
  15.  
  16. ouvrir(flot,fichier);
  17.  
  18. while(!fdf(flot))
  19. {
  20. while(strcmp(consulter(flot),"\n")!=0)
  21. {
  22. mettre(flot,consulter(flot));
  23. phrase = flot->buf;
  24. phrase++;
  25. prendre(flot);
  26. }
  27.  
  28. if (strcmp(phrase,mot) != NULL)
  29. {
  30. printf("je cherche le mot dans la phrase\n");
  31. printf("%s", phrase);
  32. }
  33. prendre(flot);
  34. }
  35. fermer(flot);
  36. }


Je vous met là la structure du type Flot:


  1. typedef struct SFlot
  2. {
  3. FILE * pfile;
  4. void *buf;
  5. size_t taille;
  6. int place;
  7. int fdf;
  8. int nbElements;
  9. } SFlot ;
  10. typedef SFlot * Flot;


La fonction consulter:

  1. void * consulter(Flot pfl)
  2. {
  3. if(estOuvert(pfl))
  4. {
  5. return pfl->buf;
  6. }
  7. else
  8. return (char *)NULL;
  9. }



Et la fonction prendre;

  1. Flot prendre(Flot pfl)
  2. {
  3. if(! estOuvert(pfl))
  4. return (Flot)NULL;
  5.  
  6. if(fdf(pfl))
  7. return (Flot)NULL;
  8.  
  9. if( fread(pfl->buf,pfl->taille,1,pfl->pfile) == 0)
  10. {
  11. pfl->fdf = 1;
  12. }
  13. else
  14. {
  15. pfl->fdf = 0;
  16. (pfl->place)++;
  17. }
  18. return pfl;
  19. }

Donc voila ce que je cherche a faire. C'est de copier toute la phrase dans un poiteur de char char *phrase et ensuite de rechercher dans cette phrase si le mot desire s'y trouve. Mais je n'arrive pas, je ne sais pas quelle fonction utilisée :??:  .
Merci d'avance pour votre, si vous avez des questions n'hesitez pas je repondrai.
@+

Autres pages sur : rechercher mot phrase

Lassé par la pub ? Créez un compte

ben les 2.
En fait je n'arrive pas à extraire la phrase.
Et vu que je n'arrive pas à faire c'est dure de chercher le mot dans la phrase. Donc si tu pouvais m'aider pour déjà extraire la phrase, ça pourait etre bien. Ensuit m'indiquer quelle fonction utilisée pour rechercher le mot dans la phrase.

THXXXXXXXX

la technique que j'utiliserai serait la suivant

je cherche la position du prochain "\n". j'ai donc a ma dispotion, l'adresse du debut et l'adresse de fin de ma phrase.
je fait un memeset (pas un strcpy puisqu'il n'y a pas de \0) dans un char* de taille suffisante.
ajout du \0 a la fin pour en faire une chaine normale
utilsation de strstr pour rechercher la sous-chaine dans la phrase
si trouvé, affichage de la phrase en question
Lassé par la pub ? Créez un compte