Problem: printf/scanf
Résolu/Fermé
asstel
Messages postés
51
Date d'inscription
vendredi 21 mars 2014
Statut
Membre
Dernière intervention
14 décembre 2014
-
26 mars 2014 à 21:53
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014 - 29 mars 2014 à 00:04
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014 - 29 mars 2014 à 00:04
2 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
26 mars 2014 à 23:22
26 mars 2014 à 23:22
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,
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
27 mars 2014 à 22:32
27 mars 2014 à 22:32
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
asstel
Messages postés
51
Date d'inscription
vendredi 21 mars 2014
Statut
Membre
Dernière intervention
14 décembre 2014
27 mars 2014 à 22:37
27 mars 2014 à 22:37
j'ai pas compris liste déroulante et les balises j'ai pas compris qsq vous avez dit c pour ça
mais si j'enlève le getchar() le program pass au 2 printf sans lire linformation
mais si j'enlève le getchar() le program pass au 2 printf sans lire linformation
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
Modifié par fiddy le 27/03/2014 à 22:51
Modifié par fiddy le 27/03/2014 à 22:51
Ok, alors la prochaine fois, tu mets ton code entre 2 balises "code" :
<code c>mettre ton code ici</code c>.
Ainsi, le code sera plus lisible.
Pour le getchar(), je suis septique. As-tu bien enlevé comme j'ai dit le getchar() seulement et uniquement après les gets() ? Si oui, reposte ton code.
<code c>mettre ton code ici</code c>.
Ainsi, le code sera plus lisible.
Pour le getchar(), je suis septique. As-tu bien enlevé comme j'ai dit le getchar() seulement et uniquement après les gets() ? Si oui, reposte ton code.
asstel
Messages postés
51
Date d'inscription
vendredi 21 mars 2014
Statut
Membre
Dernière intervention
14 décembre 2014
27 mars 2014 à 23:20
27 mars 2014 à 23:20
j'ai fais les balises mais qand je l ai prévisualiser ça change rien
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
27 mars 2014 à 23:31
27 mars 2014 à 23:31
Ok... Poste ton code quand même...
asstel
Messages postés
51
Date d'inscription
vendredi 21 mars 2014
Statut
Membre
Dernière intervention
14 décembre 2014
27 mars 2014 à 23:52
27 mars 2014 à 23:52
#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; }
26 mars 2014 à 23:29
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
Modifié par fiddy le 26/03/2014 à 23:30
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...
27 mars 2014 à 13:07
#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;
}