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 un gets


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Par défaut probleme avec un gets
    Bonjour,

    j'ai deux probleme au niveau d'un scanf et au niveau d'un gets, ils ne prennent pas de valeur en compte,
    -le scanf me permet de saisir mais ne stocke pas de valeur
    -le gets quand à lui ne me permet meme pas la saisie

    Donc programme bancale, je ne vois pas ce qui ne va pas (surement besoin de lunettes...)apres plusieurs tentatives infructueuses I NEED HELP!!!

    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
    59
    60
    61
    62
    63
    64
    65
     
    #include<stdio.h>
    #include<string.h>
     
    #define MAX_ELEVES 32
     
    typedef struct
    {
    	char nom[30];
    	char prenom[30];
    	int age;
    }
    eleve;
     
    eleve MaClasse[MAX_ELEVES];
     
    void Remplir (eleve MaClasse[], int p)
    {	
    	int i=0;
    	while(i<p)
    		{	getchar();
    			printf("\n Nom?\n");
    			gets(MaClasse[i].nom);
    			printf(" Prenom?\n");
    			gets(MaClasse[i].prenom);
    			printf(" Age?\n");
    			scanf("%d",&MaClasse[i].age);//je ne trouve pas le probleme qui fait que ça marche pas
    			i++;
    		}
    }
     
    void Afficher (eleve MaClasse[],int p)
    {	
    	int i=0;
    	while(i<p)
    	{
    		printf("\n Nom:        %s\n Prenom:     %s\n Age:        %d\n",MaClasse[i].nom,MaClasse[i].prenom,&MaClasse[i].age);
    		i++;
    	}
    }
     
    void Rechercher (eleve MaClasse[],int p)
    {
    	int i;
    	char nom_eleve[30];
    	printf("\nEntrez le nom d'un eleve pour savoir si il est inscrit dans cette classe\n");
    	gets (nom_eleve);//mon gets ne prend rien
    	for(i=0;i<p;i++)
    	{
    	if (strcmp (nom_eleve,MaClasse[i].nom)==0)
    		printf("%s est inscrit dans cette classe\n",nom_eleve);	
    	}
    }
     
    main()
    { 	
    	int NbEleves;
    	struct eleve;
     
    	printf("Saisissez le nombre effectif d eleves\n");
    	scanf("%d",&NbEleves);
    	Remplir (MaClasse,NbEleves);
    	Afficher (MaClasse,NbEleves);
    	Rechercher(MaClasse,NbEleves);
    }
    PS: au temps pour moi, le "scanf" c'était en fait le printf de la fonction "Afficher" auquel j'avais ajouté un "&" Pardon...

  2. #2
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Par défaut
    Le problème du scanf ne vient pas du scanf ! Il vient du printf , lors de l'affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf("\n Nom:        %s\n Prenom:     %s\n Age: %d\n",MaClasse[i].nom,MaClasse[i].prenom,&MaClasse[i].age);
    En effet, ton argument age est l'ADRESSE , et non la valeur... Il suffit d'enlever le "&". Un compilateur bien réglé te laurait dit...

    Ensuite, ton problème de gets... Ne pas utiliser gets ! Fonction dangereuse... Enfin sinon, le problème vient probablement d'un buffer d'entrée non vidée quand tu arrives dedans, il doit rester un "\n". Pour vider le buffer clavier, il suffit d'une petit fonction que tu trouveras très facilement sur ce site.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Par défaut
    le getchar() bien sur je suis à l'ouest des fois....
    Merci beaucoup pour le coup de pouce

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

Discussions similaires

  1. probleme avec apt-get install
    Par Xpertfly dans le forum Réseau
    Réponses: 3
    Dernier message: 14/11/2008, 14h26
  2. Probleme avec les get/ let de ma classe : je ne comprends pas l'erreur
    Par EvaristeGaloisBis dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/07/2007, 12h05
  3. probleme avec apt-get update.
    Par JavaAcro dans le forum Debian
    Réponses: 1
    Dernier message: 24/01/2007, 12h10
  4. Problème avec apt-get upgrade.
    Par byloute dans le forum Debian
    Réponses: 7
    Dernier message: 06/04/2006, 11h18
  5. probleme avec methode get
    Par Tr@nkill dans le forum ASP
    Réponses: 2
    Dernier message: 12/05/2005, 13h54

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