chercher une chaine de caractère dans un texte en Langage C
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
    invitee5fedd72

    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. #2
    invite2d8d5438

    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;
    
    }

  3. #3
    inviteb9f49292

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

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

  4. #4
    invite6de5f0ac

    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

  5. A voir en vidéo sur Futura
  6. #5
    invite2d8d5438

    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.

  7. #6
    invitee5fedd72

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

    la talle de fichier est de qq octets.

  8. #7
    invitee5fedd72

    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

  9. #8
    invite2d8d5438

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

  10. #9
    invitee5fedd72

    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

  11. #10
    invite2d8d5438

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

  12. #11
    invite23adc437

    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

  13. #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...
    Jusqu'ici tout va bien...

  14. #13
    invite23adc437

    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

  15. #14
    invite29cafaf3

    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é !

  16. #15
    invite23adc437

    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

  17. #16
    invitebefc81b0

    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

  18. #17
    invite74a6a825

    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);

  19. #18
    invite23adc437

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

    merci bcp pour votre reponse

Discussions similaires

  1. Fonction retournant une chaine de caractère
    Par inviteddae56c8 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 05/09/2007, 22h28
  2. Lecture dans un fichier texte en Langage C
    Par invitee5fedd72 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 16/04/2007, 12h04
  3. enlever un texte dans une photo
    Par invitee3655d49 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 27/06/2006, 19h31
  4. [C++] Exploiter une chaîne de caractère lue au clavier
    Par invite9c9b9968 dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 25/06/2006, 00h47
  5. Latex : Texte non interprété dans une boite
    Par invite588da7a7 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 12/01/2005, 10h44