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

  1. #21
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Points : 15
    Points
    15
    Par défaut
    Merci pour votre aide, c'est vraiment sympa.

    Je n'ai pas pu faire comme tu dis dans ton code pour le template car je ne connais pas sa taille a l'avance. C'est l'utilisateur qui le decide.
    J'ai donc gardé la facon dont j'avais fait.
    Par contre j'ai essayé le reste de ce que vous me disiez mais j'ai une erreur à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     printf ("nombre d'occurences : %u\n", count (chaine, template));
    qui me dit : called object is not a function

    donc je resume en gros ce que j'ai :
    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
    35
     
    int main()
    {
            int size_template;
            unsigned char *temp = NULL ;
     
            printf("\nEnter the size of the template you want:\n ");
            scanf("%d", &size_template);
     
            temp = malloc ( size_template );
     
            printf("\nEnter the template of the size %d:\n ",size_template);
            for(i=0;i<size_template;i++)
            {
              scanf("%x",&temp[i]);
              }            
     
            printf ("nombre d'occurences : %u\n", count(part,temp));          
      }      
     
     
     
    size_t count (char const *chaine, char const *template)
    {
       char *match = NULL;
       size_t nb_match = 0;
       size_t template_len = strlen (template);
     
       while ((match = strstr (chaine, template)) != NULL)
       {
          nb_match++;
          chaine = match + template_len;
       }
       return nb_match;
    }
    unsigned char part[8]; etant defini à un autre moment ...

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

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    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é...
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  3. #23
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Points : 15
    Points
    15
    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?

  4. #24
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    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.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  5. #25
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Points : 15
    Points
    15
    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));
    }

  6. #26
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Points : 15
    Points
    15
    Par défaut
    dslee c'est une erreur
    je vous renvoie tout de suite le code

  7. #27
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Points : 15
    Points
    15
    Par défaut
    Merci de prendre du temps pour regarder... il doit y avoir une erreur bete que je ne vois pas.

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
     
    int main(void)
    {
            int size_template;
            unsigned char *temp = NULL ;
            #define FORMAT "%1[01]"
            char template[9] = { 0 };
            int ret = 0;
     
            printf("\nEnter the size of the template you want:\n ");
            scanf("%d", &size_template);
     
                   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));
     
    return 0;   
    }
     
     
     
     
    size_t count (char const *chaine, char const *template)
    {
       char *match = NULL;
       size_t nb_match = 0;
       size_t template_len = strlen (template);
     
       while ((match = strstr (chaine, template)) != NULL)
       {
          nb_match++;
          chaine = match + template_len;
       }
       return nb_match;
    }

    unsigned char part[8]; est rempli avec des caracteres constitués de 0 et de 1.

  8. #28
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Donc je résume, la seule que je vois, ces que tu as pris mon code, et que tu l'as saccagé!!! l'indentation est horrible, les define n'importe ou, plus de headers, c'est quoi ce temp qui traine et ou vois tu part?
    Pourquoi on se casse la tête à t'aider si c'est pour faire ça?
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  9. #29
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Points : 15
    Points
    15
    Par défaut
    Merci pour l'amabilité...
    Je tiens à preciser que je ne fais pas qu'un petit bout de code, tout mon code fait plus de 1500 lignes, donc il n'est pas non plus évident de reutiliser exactement au mot pres ce que vous dites. J'essais de faire comme je peux, étant donné que je suis dans un forum de débutant, je n'ai pas encore forcement les bons automatismes et je m'en excuse.

    Malgré tout ca, j'ai quand meme reussi à faire ce que je voulais faire grace à votre aide...c'est pour ca que vous vous etes cassés la tete !

  10. #30
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par oeil de lynx Voir le message
    Merci pour l'amabilité...
    OK mes escuses.
    Autrement, si tu veux bien démarrer en langage C, je te conseille un passage obligé : http://emmanuel-delahaye.developpez.com/
    Cordialement.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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