IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Chaine de caracteres


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Par défaut Chaine de caracteres
    Bonjour,

    J'ai une chaine de caractere (Ch1) de taille n, qui contient des caracteres '1' ou '0' (des bits...).
    Je demande à l'utilisateur de rentrer une chaine de caracteres (Ch2) de taille comprise en 3 et 8 constituée également de '1' et de '0'.
    Je voudrai pouvoir reperer dans la chaine Ch1 combien de fois il y a la chaine Ch2.

    Ex : Ch1 : 001101011100
    Ch2 : 101
    nombre de fois : 2

    Avez vous une idée?
    Merci

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    cherche la fonction strstr() ...

  3. #3
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Par défaut
    Je viens de regarder, en effet je pourrai m'en servir pour retourne l'adresse de la première occurrence de la chaine Ch2 dans la chaîne CH1. Mais s'il y a plusieurs occurences et que je veux toutes les avoir?

  4. #4
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Par défaut
    Et que pensez vous de la fonction strpbrk ?

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par oeil de lynx Voir le message
    Mais s'il y a plusieurs occurences et que je veux toutes les avoir?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    char *p=NULL, *p0=NULL ;
    int     n_occurences = 0 ;
     
    p = chaine ;
    while ( (p0 = strstr ( p, chaine2 )) != NULL )
    {
       n_occurences = n_occurences + 1 ;
       p = p0 + 1 ;
    }

  6. #6
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Par défaut
    Merci.
    Je ne comprends pas tres bien ce que represente p dans ton code... Pourrais-tu m'expliquer stp?

  7. #7
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Citation Envoyé par oeil de lynx Voir le message
    Je demande à l'utilisateur de rentrer une chaine de caracteres (Ch2) de taille comprise en 3 et 8 constituée également de '1' et de '0'.
    le code que je t'ai donné fonctionne pour des saisies comprises entre 3 et 8 caractères, comme tu l'as demandé. Fais l'effort la prochaine fois de lire au moins le code posté...

  8. #8
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Par défaut
    ok... dslee, c'est juste que je n'avais donc pas bien compris le code, mais je l'avais quand meme lu.

    Par contre il me reste toujours la meme erreur pour la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     printf ("nombre d'occurences : %u\n", count (chaine, template));
    Une idée?

  9. #9
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    tu as modifié le code que je t'ai donné : donne nous ton code en entier s'il te plaît, qu'on puisse le compiler pour reproduire l'erreur.

  10. #10
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
     
     int size_template;
            int m=9;
            int N=8;
            int result_strcmp;
            unsigned char *temp = NULL ;
     
            printf("\nEnter the size of the template you want:\n ");
            scanf("%d", &size_template);
    #define FORMAT "%1[01]"
           char template[9] = { 0 };
           int ret = 0;
           unsigned char part[(n+1)*8/N];
        for(i=0;i<N;i=i+N)
            {
             for(j=0;j<N;j++)
             {
             part[j]=tab2[j+i];
             printf("%c",part[j]);
             }                   
        do
        {
          printf ("Entrer la chaine a rechercher :");
          ret = scanf (FORMAT FORMAT FORMAT FORMAT FORMAT FORMAT FORMAT FORMAT, template, template + 1, template + 2, template + 3, template + 4, template + 5, template + 6, template + 7);
          scanf ("%*[^\n]"), getchar ();/* flush input buffer */
          template[ret] = 0;/* don't forget that C strings end with nul byte */ 
          }
       while (ret < 3);
     
     
     
       printf ("nombre d'occurences : %u\n", count (part, template));
    }

  11. #11
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Par défaut
    dslee c'est une erreur
    je vous renvoie tout de suite le code

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  2. Réponses: 13
    Dernier message: 13/06/2003, 14h13
  3. Pb Update avec chaine de caractere
    Par JuJu° dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/05/2003, 15h58
  4. [LG]comparaison de chaines de caracteres
    Par thesam dans le forum Langage
    Réponses: 6
    Dernier message: 20/05/2003, 22h41
  5. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo