Pb avec Scanf
Le
MAZALREY ETIENNE

Boujour
j'ai un problème avec la fonction scanf sur le code ci desous :
struct Navire {
// structure contenant les cotes d'un bateau
char nom[50]; // nom du bateau
int nbtrans; // nombre de couples transversaux
int nbhor; // nombre de couble horizontaux
float X[30]; // tableau des abscisses des couples transversaux
float resteX[30]; // reste bas couple transversaux
float Z[30]; // tableau des hauteur des couples horizontaux
float AVresteZ[30]; // reste avant couple horizontaux
float ARresteZ[30]; // reste arrière couple horizontaux
float coordonees[30][30]; // tableau des coordonées
};
void Nouveau(){
// cette fonction traite la création d'un nouvelle carrene
int nbCoupleTrans ; // nombre de couple transversaux
int nbCoupleHor ; // nombre de couple horizontaux
char nom[50]; // nom du bateau
struct Navire bateau;
// création de la carrène/
printf(" Carenne cree ") ;
/ / demande du nom du Bateau
printf ("nom du bateau ? :");
fflush (stdin);
scanf ("%s" , nom);
strcpy(bateau.nom , nom) ;
// demande du nombre de couple transversaux
printf(" nombre de couple transversaux ? : " );
fflush (stdin);
scanf("d%" , &nbCoupleTrans ) ;
/ / demande du nombre de couple horizontaux
printf(" nombre de couple horizontaux ? : " );
fflush (stdin);
scanf("d%" , &nbCoupleHor ) ;
}
.
A l'exécution sous Windows XP avec Visual C++ 6 comme compilateur
le premier scanf met bien la chaine rentée dans "nom" , Mais pour les deux
scanf suivant, malgré que je rentre deux nombre entier les scanf ne
remplisse pas les variable " nbCoupleTrans" et " nbCoupleHor ".
Pour moi c'est incompréhensible pourquoi sa marche dans un cas et pas dans
les deux autres ?
Est ce que quelqu'un pourait m'aider.
etienne
j'ai un problème avec la fonction scanf sur le code ci desous :
struct Navire {
// structure contenant les cotes d'un bateau
char nom[50]; // nom du bateau
int nbtrans; // nombre de couples transversaux
int nbhor; // nombre de couble horizontaux
float X[30]; // tableau des abscisses des couples transversaux
float resteX[30]; // reste bas couple transversaux
float Z[30]; // tableau des hauteur des couples horizontaux
float AVresteZ[30]; // reste avant couple horizontaux
float ARresteZ[30]; // reste arrière couple horizontaux
float coordonees[30][30]; // tableau des coordonées
};
void Nouveau(){
// cette fonction traite la création d'un nouvelle carrene
int nbCoupleTrans ; // nombre de couple transversaux
int nbCoupleHor ; // nombre de couple horizontaux
char nom[50]; // nom du bateau
struct Navire bateau;
// création de la carrène/
printf(" Carenne cree ") ;
/ / demande du nom du Bateau
printf ("nom du bateau ? :");
fflush (stdin);
scanf ("%s" , nom);
strcpy(bateau.nom , nom) ;
// demande du nombre de couple transversaux
printf(" nombre de couple transversaux ? : " );
fflush (stdin);
scanf("d%" , &nbCoupleTrans ) ;
/ / demande du nombre de couple horizontaux
printf(" nombre de couple horizontaux ? : " );
fflush (stdin);
scanf("d%" , &nbCoupleHor ) ;
}
.
A l'exécution sous Windows XP avec Visual C++ 6 comme compilateur
le premier scanf met bien la chaine rentée dans "nom" , Mais pour les deux
scanf suivant, malgré que je rentre deux nombre entier les scanf ne
remplisse pas les variable " nbCoupleTrans" et " nbCoupleHor ".
Pour moi c'est incompréhensible pourquoi sa marche dans un cas et pas dans
les deux autres ?
Est ce que quelqu'un pourait m'aider.
etienne
scanf("%d" , &nbCoupleTrans ) ;
Avec d%, ca attend une saisie mais ca ne met jamais rien dans 'nbCoupleTrans'
Il faudrait aussi faire un minimum de controle (qui aurait detecte ca) au cas ou
la saisie est incorrecte :
if (scanf("%d" , &nbCoupleTrans ) != 1 )
{
/* saisie incorrect ...
}
[...]
Moi, je n'ai aucun problème avec scanf(), car je ne l'utilise pas.
http://mapage.noos.fr/emdel/notes.htm#saisie
--
-ed- get my email here: http://marreduspam.com/ad672570
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/