bug sur un exercice de c

bug sur un exercice de c - C - Programmation

Marsh Posté le 13-10-2010 à 15:55:17    

Bonjour,  
 
En fait le programme fonctionne mais au moment ou je dois taper l'opération, il indique "tapez enter pour continuer" et il se ferme après.  
 
 

Code :
  1. # include <stdio.h>
  2. # include <stdlib.h>
  3. int main(void)
  4. {
  5. int n1;
  6. int n2;
  7. char option;
  8. printf("premier nombre : " );
  9. scanf("%d",&n1);
  10. printf("deuxieme nombre : " );
  11. scanf("%d",&n2);
  12. printf("operation : " );
  13. scanf("%c",&option);
  14. switch (option)
  15. {
  16. case '+' : printf("%d + %d = %d",n1,n2,n1+n2);
  17.    break
  18. case '-' : printf("%d - %d = %d",n1,n2,n1-n2);
  19.    break;
  20. case '*' : printf("%d * %d = %d",n1,n2,n1*n2);
  21.    break;
  22. case '/' : printf("%d / %d = %d",n1,n2,n1/n2);
  23.    break;
  24. }
  25. system("PAUSE" );
  26. return 0;
  27. }

Reply

Marsh Posté le 13-10-2010 à 15:55:17   

Reply

Marsh Posté le 13-10-2010 à 16:18:16    

scanf, c'est le mal.
Ne pas tester ses retours de fonction, c'est le mal


---------------
last.fm
Reply

Marsh Posté le 13-10-2010 à 17:14:06    

Ton scanf pour operation lit la fin de ligne apres le deuxieme nombre.
scanf(" %c", &option) devrait faire ce que tu veux (sauter tous les blancs avant de lire qqch).  Il faudrait mieux aussi terminer les lignes de resultats (\n).
 
Mais bon, scanf, c'est pas particulierement conseille pour l'interactif, c'est beaucoup trop sensible au format exact employe.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 15-10-2010 à 12:45:07    

Que peut-on écrire de mieux que scanf alors s'il vous plais ?
merci

Reply

Marsh Posté le 15-10-2010 à 12:58:34    

fgets puis sscanf, c'est deja un peu moins piegeux.  Mais generalement je me debrouille avec strtoXX et si ca suffit pas, je sorts soit l'artillerie des regexp, soit je concoit la lecture avec un analyseur lexical dans toute sa splendeur (genere ou pas, ca depend du contexte).


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Sujets relatifs:

Leave a Replay

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