saisie d'un nombre

saisie d'un nombre - C - Programmation

Marsh Posté le 14-03-2004 à 18:38:13    

voilà, je voudrais une fonction qui me lise un nombre au clavier (pas un chiffre)
 

Code :
  1. unsigned short saisieNombre(){
  2. unsigned short choix;
  3. do{
  4.  scanf("%d", &choix);
  5. }
  6. while (choix < 0 || choix > 65535);
  7. return(choix);
  8. }
  9. int main()
  10. {
  11. unsigned short c = saisieNombre();
  12. printf("%d\n", c);
  13. return(0);
  14. }


 
si je saisis un nombre, il me l'affiche bien, mais si je tappe par exemple "a", il affiche 52428...
 
j'ai un peu de mal à suivre là :heink:


Message édité par nibbles1 le 14-03-2004 à 18:38:48
Reply

Marsh Posté le 14-03-2004 à 18:38:13   

Reply

Marsh Posté le 14-03-2004 à 18:40:42    

et voilà, encore un erreur de format et une mauvaise utilisation de scanf
 
unsigned short -> %hu
 
et si le code de retour de scanf n'est pas bon, et bien on purge stdin (pourquoi pas jusqu'au prochain caractère d'espacement, on remets à zero les flags et on repart. ou alors, on lit à coup de fgets et on tente des conversion avec sscanf (méthode peut être plus simple)

Reply

Marsh Posté le 14-03-2004 à 18:41:35    

merci beaucoup ;)
 
reste dans le coin, on ne sait jamais [:boidleau]

Reply

Marsh Posté le 14-03-2004 à 18:44:01    

désolé de te faire chier mais je comprends pas "purge stdin" ni "remets à 0 les flags" (noob inside)

Reply

Marsh Posté le 14-03-2004 à 18:46:08    

donc prends l'autre méthode

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed