Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pb avec Scanf

2 réponses
Avatar
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("\n Carenne cree \n") ;

/ / 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(" \n 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

2 réponses

Avatar
Yves ROMAN

Boujour

j'ai un problème avec la fonction scanf sur le code ci desous :

[...]


// demande du nombre de couple transversaux

printf(" nombre de couple transversaux ? : " );
fflush (stdin);
scanf("d%" , &nbCoupleTrans ) ;


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 ...
}

[...]

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 ?



Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', "MAZALREY ETIENNE" wrote:

j'ai un problème avec la fonction scanf sur le code ci desous :


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/