Problem: printf/scanf
Résolu
asstel
Messages postés
54
Statut
Membre
-
asstel Messages postés 54 Statut Membre -
asstel Messages postés 54 Statut Membre -
bonsoir tout le monde,
j'ai un problem en C
esq qelq1 a une idée pour le resourdre
j'ai un code en C plein de printf et scanf
au niveau d'execution le programme n'attend pas l'utilisateur pour saisir une information
il affiche directement le printf suivant
que dois-je faire??
j'ai un problem en C
esq qelq1 a une idée pour le resourdre
j'ai un code en C plein de printf et scanf
au niveau d'execution le programme n'attend pas l'utilisateur pour saisir une information
il affiche directement le printf suivant
que dois-je faire??
2 réponses
-
Bonjour,
Généralement, il vaut mieux donner son code pour obtenir une réponse...
Pour le coup, je pense savoir d'où vient le problème.
Mets un getchar(); après chacun de tes scanf(). Cela devrait résoudre le problème.
Sinon, poste ton code (avec les getchar()) entre deux balises "code" (liste déroulante située à droite du bouton "souligné").
Cdlt,-
-
-
voici le code avec getchar() :
#include <stdio.h>
#include <stdlib.h>
//ajouter un etudiant
typedef struct Etud Etud;
struct Etud
{
char mat[15];
char nom[50];
char prenom[50];
int nbr_livre;
};
void Ajout_Etudiant()
{
int i;
FILE* f=NULL;
Etud Etudiant;
f=fopen("FMembre.txt","a+");
do{
//lire un etudiant
printf("MATRICULE : ");
gets(Etudiant.mat);
getchar();
printf("NOM : ");
gets(Etudiant.nom);
getchar();
printf("PRENOM : ");
gets(Etudiant.prenom);
getchar();
printf("nombre de livres empruntes par l'etudiant:\n");
printf("Le nombre doit etre comprit entre 0 et 3\n");
do{
scanf("%d",&Etudiant.nbr_livre);
getchar();
}while(Etudiant.nbr_livre<0 || Etudiant.nbr_livre>3);
//Ecrire dans le fichier
fprintf(f,"%s\n%s\n%s\n%d\n",Etudiant.mat,Etudiant.nom,Etudiant.prenom,Etudiant.nbr_livre);
printf("Voulez-vous continuer!\noui: tappez 1\tnon: tappez autre nombre\n");
scanf("%d",&i);
getchar();
}while(i==1);
fclose(f);
};
int main()
{
Ajout_Etudiant();
return 0;
}
-
-
Tu n'as pas tenu compte de toutes mes remarques :
entre deux balises "code" (liste déroulante située à droite du bouton "souligné").
Sinon c'est illisible.
Pour ton code, enlève les getchar() après les gets() et ça devrait être mieux.
Pour info, gets() est à bannir. Il faut utiliser fgets() à la place : http://manpagesfr.free.fr/man/man3/gets.3.html
-
-
-
-
-
#include <stdio.h> #include <stdlib.h> //ajouter un etudiant typedef struct Etud Etud; struct Etud { char mat[15]; char nom[50]; char prenom[50]; int nbr_livre; }; void Ajout_Etudiant() { int i; FILE* f=NULL; Etud Etudiant; f=fopen("FMembre.txt","a+"); do{ //lire un etudiant printf("MATRICULE : "); gets(Etudiant.mat); //getchar(); printf("NOM : "); gets(Etudiant.nom); // getchar(); printf("PRENOM : "); gets(Etudiant.prenom); //getchar(); printf("nombre de livres empruntes par l'etudiant:\n"); printf("Le nombre doit etre comprit entre 0 et 3\n"); do{ scanf("%d",&Etudiant.nbr_livre); getchar(); }while(Etudiant.nbr_livre<0 || Etudiant.nbr_livre>3); //Ecrire dans le fichier fprintf(f,"%s\n%s\n%s\n%d\n",Etudiant.mat,Etudiant.nom,Etudiant.prenom,Etudiant.nbr_livre); printf("Voulez-vous continuer!\noui: tappez 1\tnon: tappez autre nombre\n"); scanf("%d",&i); getchar(); }while(i==1); fclose(f); }; int main() { Ajout_Etudiant(); return 0; }
-