Problem: printf/scanf
Résolu
asstel
Messages postés
51
Date d'inscription
Statut
Membre
Dernière intervention
-
asstel Messages postés 51 Date d'inscription Statut Membre Dernière intervention -
asstel Messages postés 51 Date d'inscription Statut Membre Dernière intervention -
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,
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,
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
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; }
des fois l'utilisateur doit cliquer sur entré des fois nn je trouve ça genant un peu pour lui nn!
je cherche une autre solution s'il existe pour la remplacer
merciiiiii vraiment pour votre aide
Généralement, il vaut mieux donner son code pour obtenir une réponse...
Sinon, poste ton code (avec les getchar()) entre deux balises "code" (liste déroulante située à droite du bouton "souligné").
Sans ça, on ne peut pas deviner...
#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;
}