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 avec mon menu


Sujet :

C

  1. #1
    Invité
    Invité(e)
    Par défaut probleme avec mon menu
    Bonjour
    j'ai un crée un menu et quand je choisi 1 pour ajouter une personne
    les 2 lignes nom et prénom apparaissent d'un coup et cela marche pas .
    je voudrais c'est que quand choisi 1 on fois entrer le nom ensuite le prénom et après le téléphone .

    je suis débutant...

    Merci

    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
    #include <stdio.h>
    #include <stdlib.h>
     
     
    typedef struct
    {
        char nom[10];
        char prenom[10];
        char tel[10];
     
    } fiche;
     
     
    void ajouter()
    {
        fiche s;
        printf("**Saisie d'une fiche** \n\n");
        printf("Nom de la personne :\n");
        gets(s.nom);
        printf("prenom de la personne : \n");
        gets(s.prenom);
        printf("Numero de telephone : \n");
        gets(s.tel);
    }
     
    int menu()
    {
        int choix =0;
        while(choix < 1 || choix > 3)
        {
            printf("------- Repertoire 2013-------\n");
            printf("1 : Ajouter une fiche \n");
            printf("2 : Lire une fiche \n");
            printf("3 : Quitter");
            printf("Votre choix ?");
            scanf("%d",&choix);
            return choix;
        }
    }
     
    int main()
    {
        switch (menu())
        {
           case 1:
              ajouter();
        }
     
        return 0;
    }
    Dernière modification par Franck.H ; 06/07/2013 à 11h39. Motif: Ré-indentation du code, merci de faire attention à la présentation du code

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut


    J'ai refait une indentation de ton code, c'était illisible, pas d'indentation, trop trop d'espaces, un code non aéré est difficilement lisible mais l'inverse également

    Ensuite, dans ta fonction menu (), le return choix; doit se faire après la boucle, scanf rempli ta variable dans la boucle mais tu n'en retourne la valeur qu'une fois arrivée à la fin de la fonction, c'est comme ça que ça marche, d'ailleurs mon compilateur me disais
    C:\Projects\test\main.c|39|warning: control reaches end of non-void function [-Wreturn-type]|
    ce qui veut tout dire

    Dans la fonction ajouter(), utilise plutôt la fonction fgets en lieu et place de gets car plus sécurisée. Ceci donnerait cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fgets (s.nom, 10, stdin);
    La valeur 10 étant la taille de ton tableau et stdin étant le buffer clavier.

    Maintenant la source de ton problème, dans la fonction menu(), après le scanf, vide le buffer clavier avec la commande
    ton problème est sans aucun doute dû au fait que lorsque tu tape entrée pour valide ton choix de menu, le programme garde dans le flot stdin, la valeur ce qui valide la première saisie est passe directement à la seconde

    Pour terminer, dans ton main, dans le switch, met toujours une instruction break; après chaque case comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    case 1:
       ajouter();
    break;
    Voilà voilà
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    J'ai fait un edit de mon post si jamais tu as commencé à le lire, relis le, me suis trompé dans le nommage d'une fonction, ça pourrait te perturber
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  4. #4
    Invité
    Invité(e)
    Par défaut
    merci de ta réponse rapide

    peux tu me refaire mon code clairement svp?

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Ce n'est pas la meilleure façon d'apprendre mais soit:
    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
    #include <stdio.h>
    #include <stdlib.h>
     
    #define BUF_SIZE 10
     
    typedef struct
    {
        char nom[BUF_SIZE];
        char prenom[BUF_SIZE];
        char tel[BUF_SIZE];
     
    } fiche;
     
     
    void ajouter(void)
    {
        fiche s;
        printf("**Saisie d'une fiche** \n\n");
        printf("Nom de la personne :\n");
        fgets (s.nom, BUF_SIZE, stdin);
        printf("prenom de la personne : \n");
        fgets (s.prenom, BUF_SIZE, stdin);
        printf("Numero de telephone : \n");
        fgets (s.tel, BUF_SIZE, stdin);
    }
     
    int menu(void)
    {
        int choix =0;
        while(choix < 1 || choix > 3)
        {
            printf("------- Repertoire 2013-------\n");
            printf("1 : Ajouter une fiche \n");
            printf("2 : Lire une fiche \n");
            printf("3 : Quitter");
            printf("Votre choix ?");
            scanf("%d",&choix);
            fflush(stdin);
        }
     
        return choix;
    }
     
    int main (void)
    {
        switch (menu())
        {
           case 1:
              ajouter();
           break;
        }
     
        return EXIT_SUCCESS;
    }
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Merci beaucoup

  7. #7
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Par contre, si j'était toi, je ne déclarerais pas fiche s; dans la fonction ajouter () car comment tu vas propager cette variable par la suite vers d'autres fonctions ?

    Moi ce que je ferais, c'est que je la déclarerais dans la fonction main () et je la passerais en argument à la fonction ajouter (); par le biais d'un pointeur.
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  8. #8
    Invité
    Invité(e)
    Par défaut
    comment cela??

    sinon connais tu un bon livre pour faire des excercices en C
    Dernière modification par Invité ; 06/07/2013 à 17h46.

  9. #9
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Tu peux lire le K&R (désolé mais je suis pas chez moi et j'arrive pas à accéder au site pour la page livres)
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  10. #10
    Invité
    Invité(e)
    Par défaut
    merci

  11. #11
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  12. #12
    Invité
    Invité(e)
    Par défaut
    merci pour le lien

    est ce que ce livre est bien aussi :
    Programmer en langage C : Cours et exercices corrigés de Claude delannoy?

  13. #13
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Pas lu désolé
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  14. #14
    Invité
    Invité(e)
    Par défaut
    merci quand meme et est ce que tu donne des cours?

  15. #15
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par zoltars43 Voir le message
    merci quand meme et est ce que tu donne des cours?
    Heu non désolé, ça aurait été avec plaisir (le plaisir de transmettre mes connaissance j'adorerais) mais je manque de temps pour cela
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

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

Discussions similaires

  1. j'ai un probleme avec mon menu il s'affiche en double
    Par marcous dans le forum Débuter
    Réponses: 7
    Dernier message: 18/09/2014, 10h37
  2. Probleme avec mon menu (vertical) CSS
    Par charleshbo dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 10/06/2008, 17h53
  3. [CSS] Probleme avec mon menu css
    Par otagun dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 13/05/2006, 15h37
  4. Probleme avec mon professeur
    Par Hamza dans le forum Algorithmes et structures de données
    Réponses: 20
    Dernier message: 16/07/2005, 11h50
  5. [Thread] Probleme avec mon Timer
    Par Nico66 dans le forum EDT/SwingWorker
    Réponses: 10
    Dernier message: 02/06/2005, 18h10

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