Problème avec scanf() insovlable ?!

Résolu
nollyflip Messages postés 9 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 2 juin 2007 - 10 oct. 2005 à 19:38
orellaf Messages postés 4 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 1 juillet 2010 - 23 oct. 2005 à 19:21
Bonjour,
J'ai un souci plutôt embêtant avec scanf()
Je programme sous XP et devcpp
Dès que j'appel scanf(), la console se ferme (ca plante quoi)
J'ai fait un programme tout simple qui DOIT fonctionner (recopié !)
Mais ca ne fonctionne pas.
Qqun a une idée ?
Merci d'avance

#include <stdio.h>
main()
{
int i;
printf("entrer un entier sous forme hexadecimale i = ");
scanf("%x",&i);
printf("i = %d\n",i);
getchar();
}

4 réponses

nollyflip Messages postés 9 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 2 juin 2007
10 oct. 2005 à 22:52
Ca ne fonctionne pas, j'ai une erreur de fonction system() non déclarée lors de la compilation.
Le getchar() à la fin me permettait de garder la console ouverte justement
Mais apparement ca fonctionne en mettant une boucle infinie.
Mon scanf() n'a jamais voulu fonctionner et d'un coup il devient tout docile ?!
Il faisait planter tous mes progs dès que je m'en servais (je respectais bien le type de données..)
Problème résolu, comment, mystère
En tout cas merci !
3
orellaf Messages postés 4 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 1 juillet 2010
10 oct. 2005 à 21:01
Ton probleme n'a rien n'avoir avec scanf() mais sous Deccpp, il faut rajouter system("PAUSE"); à la fin du programme pour que la console reste ouverte .

Voila le programme modifié :



#include <stdio.h>

main()

{

int i;

printf("entrer un entier sous forme hexadecimale i = ");

scanf("%x",&i);

printf("i = %d\n",i);

getchar();

system("PAUSE");

}
0
cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 1
11 oct. 2005 à 00:19
Salut,

en fait c'est tout simple, quand tu appuies sur <entrer> pour
valider ta saisie dans le scanf(), le getchar() qui suit le récupère et
la suite du code est exécutée.



Les solutions :

- ou tu place un deuxième getchar() consécutif au premier ,

- ou tu te sers du system("PAUSE") en incluant la librairie <stdlib.h> .



eRoZion
0
orellaf Messages postés 4 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 1 juillet 2010
23 oct. 2005 à 19:21
Salut,

pour ton probleme, il suffit de rajouter system("PAUSE"); à la fin du programme (oui ca on sait) , et si tu as enregistré sous Devcpp avec l'extension .c alors cela marchera. Si par contre tu as enregistré ta source avec l'extension .cpp alors cette fois-ci il te faudra rajouter la librairie stdlib au debut de ton prog : #include <stdlib.h>
0
Rejoignez-nous