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 :

Probleme recherche caractère. Mon programme ne fait pas ce que je veut.


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Probleme recherche caractère. Mon programme ne fait pas ce que je veut.
    Bonsoir à tous,

    Mon programme demande bien le mot à rentrer, vérifie bien le nombre de caractère mais ensuite m'affiche les printf() et termine sont exécution. Je ne peut pas rentrer le caractère que je veut qu'il recherche.

    Je pense que c'est à cause des printf() et scanf() qui s'enchaîne car si je sépare mon code et que je laisse que la partie "demande de caractère" et "recherche de ce caractère" dans le mot sa fonctionne très bien.

    J'ai essayé également de vider le buffer du clavier mais je me retrouve toujours avec le même problème.

    Si vous pouvez m'aider je vous en remercie d'avance.

    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
    46
    47
    48
    49
    #include <stdio.h>
    #include <stdlib.h>
     
    int LongueurChaine(char Mot[], int TailleMot);
    int OccurenceCar(char Mot[], int TailleMot, char var);
     
    int main()
    {
            char Mot[100];
            char var = 'c';
            int TailleMot=7;
     
            printf("\nEntrer un mot de sept caractere max : ");
            scanf("%s", Mot);
     
                    if(LongueurChaine(Mot, TailleMot) <= TailleMot)
                            printf("\nLe mot est compose de %d caracteres.\n\n", LongueurChaine(Mot, TailleMot));
     
                    else
                            printf("\nLe mot saisi est trop long :-( !!! Mais passons pour cette fois ;-)\n\n");
     
            printf("Caractere a compter dans la partie utile du mot ? ");
            scanf("%c", &var);
     
            printf("\n\nLe caractere %c s'y trouve %d fois dans le mot.\n\n", var, OccurenceCar(Mot, TailleMot, var));
     
            return 0;
    }
     
    int LongueurChaine(char Mot[], int TailleMot)
    {
            int i;
     
            for(i=0; Mot[i]!='\0'; i++){}
     
            return (i);
    }
     
    int OccurenceCar(char Mot[], int TailleMot, char var)
    {
            int i, compteur = 0;
     
            for(i=0; i <= TailleMot; i++)
            {
                    if(var==Mot[i])
                            compteur++;
            }
           return (compteur);
    }

  2. #2
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Avec scanf(" %c", &var), ça se portera déjà mieux. Remarque l'espace avant le %. Sans l'espace avant le %, ca peut aussi aller mais il faut vider le buffer du clavier après la lecture avec scanf("%s", Mot);

    [Tutoriel] Lire de manière sûre des données sur l'entrée standard
    [FAQ] Comment vider le buffer du clavier ?

  3. #3
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci Melem.
    J'ai rajouté l'espace devant le %c et sa fonctionne sans problème.
    Mais j'ai également essayer en enlevant l'espace et en vidant le buffer après le scanf("%s") et je me retrouve avec le même problème.
    Je ne comprend pas pourquoi !

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    #include <stdio.h>
    #include <stdlib.h>
     
    int LongueurChaine(char Mot[], int TailleMot);
    int OccurenceCar(char Mot[], int TailleMot, char var);
    void clean_stdin(void);
     
    int main()
    {
            char Mot[100];
            char var = 'c';
            int TailleMot=7;
     
            printf("\nEntrer un mot de sept caractere max : ");
            scanf("%s", Mot);
            void clean_stdin();
     
                    if(LongueurChaine(Mot, TailleMot) <= TailleMot)
                            printf("\nLe mot est compose de %d caracteres.\n\n", LongueurChaine(Mot, TailleMot));
     
                    else
                            printf("\nLe mot saisi est trop long :-( !!! Mais passons pour cette fois ;-)\n\n");
     
            printf("Caractere a compter dans la partie utile du mot ? ");
            scanf("%c", &var);
     
            printf("\n\nLe caractere %c s'y trouve %d fois dans le mot.\n\n", var, OccurenceCar(Mot, TailleMot, var));
     
            return 0;
    }
     
    int LongueurChaine(char Mot[], int TailleMot)
    {
            int i;
     
            for(i=0; Mot[i]!='\0'; i++){}
     
            return (i);
    }
     
    int OccurenceCar(char Mot[], int TailleMot, char var)
    {
            int i, compteur = 0;
     
            for(i=0; i <= TailleMot; i++)
            {
                    if(var==Mot[i])
                            compteur++;
            }
           return (compteur);
    }
    void clean_stdin(void)
    { int c;
     
        do {
            c = getchar();
        } while (c != '\n' && c != EOF);
    }

  4. #4
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    scanf("%s", Mot);
    clean_stdin();
    Tu ne sais toujours pas la différence entre déclarer et appeler une fonction ?

  5. #5
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Si je sais la différence il y a juste eu une erreur de copier/coller quand j'ai modifier mon code.
    J'avais pas vu que j'avais laissé le "void".
    Autant pour moi.

    Merci

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

Discussions similaires

  1. [Système] bouton qui ne fait pas se que je veut
    Par schats dans le forum Langage
    Réponses: 2
    Dernier message: 27/04/2007, 11h17
  2. Réponses: 3
    Dernier message: 16/04/2007, 17h01
  3. Mon programme ne marche pas aprés le if:?
    Par mitherkiller dans le forum C
    Réponses: 28
    Dernier message: 28/03/2007, 19h47
  4. Mon programme ne fonctionne pas
    Par phil23 dans le forum C
    Réponses: 4
    Dernier message: 22/03/2007, 16h31
  5. Sos mon programme ne marche pas
    Par monalisa_dulouvre dans le forum C
    Réponses: 49
    Dernier message: 26/12/2006, 18h35

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