Répondre à la discussion
Affichage des résultats 1 à 18 sur 18

chercher une chaine de caractère dans un texte en Langage C



  1. #1
    lui

    chercher une chaine de caractère dans un texte en Langage C

    avec quel fonction peut on chercher une chaine de caractère dans un fichier texte (avec le langage C)

    Merci

    -----


  2. Publicité
  3. #2
    Jean_Luc

    Re : chercher une chaine de caractère dans un texte en Langage C

    Salut,

    Je ne connais de fonction C qui permette de rechercher une chaine directement dans un fichier. Voila une fonction, qui fait ce boulot :

    Code:
    // Retourne 1 si la chaine est trouvée dans le
    // fichier specifié, sinon 0 (Algorithme naif)
    
    int find(char *fileName,char *strSearch) {
    
      FILE *f;
      char c;
      int found=0;
      int pos=0;
      int length;
    
      f = fopen(fileName,"r");
      if( f == NULL )
        return 0;
    
      length=strlen(strSearch);
    
      while( fread(&c,1,1,f)>0 && !found ) {
    
        if( c==strSearch[pos] ) {
          pos++;
        } else {
          if(pos!=0) {
            // On doit rembobiner !
            fseek(f,-pos,SEEK_CUR);
            pos=0;
          }
        }
    
        found = (pos==length);
    
      }
      fclose(f);
    
      return found;
    
    }
    L'Univers est fini. Ah bon déjà ?

  4. #3
    lou_ibmix_xi

    Re : chercher une chaine de caractère dans un texte en Langage C

    Pour comparer deux chaînes de caractères:
    strncmp et strcmp

  5. #4
    fderwelt

    Re : chercher une chaine de caractère dans un texte en Langage C

    Bonjour,

    Il existe (au moins sous BSD Unix) la fonction strstr() qui donne la position d'une sous-chaîne dans une chaîne.

    -- françois
    Les optimistes croient que ce monde est le meilleur possible. Les pessimistes savent que c'est vrai.

  6. #5
    Jean_Luc

    Re : chercher une chaine de caractère dans un texte en Langage C

    Salut,

    Citation Envoyé par fderwelt Voir le message
    Bonjour,

    Il existe (au moins sous BSD Unix) la fonction strstr() qui donne la position d'une sous-chaîne dans une chaîne.

    -- françois
    La fonction strstr() fait partie de la librairie standard C, elle devrait donc être disponible sur toutes les platformes. Cepandant, elle ne repond pas au besoin de lui. Il faudrait charger tout le fichier texte dans une chaine et ensuite effectuer la recherche avec strstr(), le problème c'est qu'on ne connait pas la taille max du fichier.
    L'Univers est fini. Ah bon déjà ?

  7. A voir en vidéo sur Futura
  8. #6
    lui

    Re : chercher une chaine de caractère dans un texte en Langage C

    la talle de fichier est de qq octets.

  9. Publicité
  10. #7
    lui

    Re : chercher une chaine de caractère dans un texte en Langage C

    juste pour un détail, peut etre la chaine de caractère recherchée sera supprimeer.
    Donc connaissez avez vous une idées pour suprimer une chaine de caractère dans un fichier texte.

    merci

  11. #8
    Jean_Luc

    Re : chercher une chaine de caractère dans un texte en Langage C

    Citation Envoyé par lui Voir le message
    juste pour un détail, peut etre la chaine de caractère recherchée sera supprimeer.
    Donc connaissez avez vous une idées pour suprimer une chaine de caractère dans un fichier texte.

    merci
    Je ne connais pas de fonction C standard qui fasse ça. Tu peux adapter l'algorithme que je t'ai donné dans le post #2.

    Bon courage....
    L'Univers est fini. Ah bon déjà ?

  12. #9
    lui

    Re : chercher une chaine de caractère dans un texte en Langage C

    j'ai pas bien compris ton exemple #2.
    Sera t-il possible de me le détailler plus.
    Je te remercie d'avance


    Lui

  13. #10
    Jean_Luc

    Re : chercher une chaine de caractère dans un texte en Langage C

    Citation Envoyé par lui Voir le message
    j'ai pas bien compris ton exemple #2.
    Sera t-il possible de me le détailler plus.
    Je te remercie d'avance


    Lui
    Ben c'est une fonction qui recherche l'occurence d'une chaine de caractère dans un fichier, tu peux trouver une description de cet algorithme sur Wikipedia.

    Quelques petites précisions sur la fonction:

    Code:
    while( fread(&c,1,1,f)>0 && !found ) {
    Cette ligne lit un caractère du fichier texte et le charge dans la variable c. le test >0 permet de sortir de la boucle si l'on a atteind la fin du fichier, le test !found permet de s'arrêter si on a trouvé la chaine.

    Code:
        if( c==strSearch[pos] ) {
          pos++;
        } else {
          if(pos!=0) {
            // On doit rembobiner !
            fseek(f,-pos,SEEK_CUR);
            pos=0;
          }
        }
        found = (pos==length);
    Ce bout de code détermine si la chaine strSearch est présente dans le fichier. La variable pos représente l'indice du caractère commun. Si pos arrive à la fin de strSearch, found passe à vrai via le test found = (pos==length) et c'est gagné, si on trouve un caratère différent, il faut reprendre la recherche en amont (voir article Wikipedia).

    Si tu as d'autres questions, n'hésite pas....
    L'Univers est fini. Ah bon déjà ?

  14. #11
    walid750000

    Smile Re : chercher une chaine de caractère dans un texte en Langage C

    bonjours
    je cherche a ecrire un program C qui permet de chercher si une chaine existe dans les ficher text que contient l'ordinateur mais je ne sais pa comment accéder a tous mes fichiers pour faire le test
    est ce que quelqu'un a une solution et merci d'avance

  15. #12
    polo974

    Re : chercher une chaine de caractère dans un texte en Langage C

    Oh, le beau déterrage...

    ce n'est pas un pb de recherche de texte, c'est pb d'énumération des fichiers
    et ça se résout différemment selon le système
    comme ce n'est pas indiqué, c'est sans doute du windows...
    Daudet, tu vas nous manquer...

  16. Publicité
  17. #13
    walid750000

    Re : chercher une chaine de caractère dans un texte en Langage C

    tout d'abors merci et c bien sa mon probleme , je cherche le moyen d'effectuer se déterrage j'utilise le systeme windows 7

  18. #14
    pelkin

    Re : chercher une chaine de caractère dans un texte en Langage C

    Ben quand on intervient en 2010 sur un post de 2007, le déterrage est DEJA effectué !

  19. #15
    walid750000

    Re : chercher une chaine de caractère dans un texte en Langage C

    mon poste n'est pa de 2007 c un nouveau hp G62 de 2010 mais je voulais dire que j'utilise un systeme d'exploitation widows SEVEN

  20. #16
    TheMadHatter

    Re : chercher une chaine de caractère dans un texte en Langage C

    Tu fais du système? Si oui je te conseil de regarder plus près la fonction readdir pour voir ce qu'il se trouve dans ton repertoire.

    Cordialement,
    The Hatter

  21. #17
    DomiM

    Re : chercher une chaine de caractère dans un texte en Langage C

    Bonsoir

    En C++ de bas niveau

    Code:
      WIN32_FIND_DATA FindFileData;
      HANDLE hFind;
    
      hFind = FindFirstFile("*.txt", &FindFileData);
      if (hFind != INVALID_HANDLE_VALUE) 
      {
    	do
    	{
    		ChercheDansFichier(FindFileData.cFileName);
    	} while (FindNextFile(hFind, &FindFileData));
      }
      FindClose(hFind);
    Mesurer la masse de la situation permettrait de connaitre sa gravité :)

  22. #18
    walid750000

    Re : chercher une chaine de caractère dans un texte en Langage C

    merci bcp pour votre reponse

  23. Publicité

Sur le même thème :

Discussions similaires

  1. Fonction retournant une chaine de caractère
    Par youril dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 05/09/2007, 21h28
  2. Lecture dans un fichier texte en Langage C
    Par lui dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 16/04/2007, 11h04
  3. enlever un texte dans une photo
    Par rosenada dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 27/06/2006, 18h31
  4. [C++] Exploiter une chaîne de caractère lue au clavier
    Par Gwyddon dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 24/06/2006, 23h47
  5. Latex : Texte non interprété dans une boite
    Par knecmotet dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 12/01/2005, 09h44