Se connecter avec
S'enregistrer | Connectez-vous

[C]Problème avec scanf dans une fonction

Dernière réponse : dans Programmation
Expert Programmation

Bonjour,

Merci par avance pour votre indulgence, je débute en langage C. J'essaie déjà de comprendre les rudiments créant de petits de code exécuté en mode console.

Et là, je me trouve face à un problème qui me laisse perplexe...

Déjà, la fonction où se trouve le problème :
  1. void choixMarge()
  2. {
  3. long marge = 0;
  4. long *pointMarge = &marge;
  5. char confirmMarge = 'n';
  6. char *pointConfirmMarge = &confirmMarge;
  7.  
  8. do
  9. {
  10. printf("Votre marge actuelle est de 20 pourcent ; nouvelle marge ? ");
  11. scanf("%ld", pointMarge);
  12. printf("Votre nouvelle marge est de %ld pourcent.\nConserver cette valeur ? (o/n)", *pointMarge);
  13. scanf("%c", pointConfirmMarge);
  14. printf("\n");
  15. }
  16. while(*pointConfirmMarge = 'n');
  17. }


Cette fonction me sert à récupérer une valeur taper par l'utilisateur. Et je voudrais avoir confirmation que cette valeur est bien celle qu'il voulait. Mais à l'exécution, le programme "saute" mon dernier scanf, celui sensé récupérer un caractère (o ou n)... Voyez-vous l'origine du bug dans mon code ?

Merci d'avance

Autres pages sur : probleme scanf fonction

Lassé par la pub ? Créez un compte
Expert Programmation

je la vois à 500 Km.

%c dans un scanf récupère un caractère du flux d'entrée, mais UN SEUL caractère. et sans l'interpreter.

or dans un flux il y a des retours charriots, des espaces et bien d'autres choses. j'imagine que le dernier scanf lit en fait le retour charriot que l'utilisateur à tapé lorsqu'il était au premier scanf.

de manière générale, scanf("%c",&truc) ou son équivalent truc=getchar() ne font pas ce que l'on veut lorsqu'on fait une interface.

solution réellement sale :
  1. while (getchar()!='\n');
  2.  
  3. pointConfirmMarge=getchar();
  4.  
  5. while (getchar()!='\n');
Expert Programmation

Merci à tous pour votre aide, en effet, ça marche bien avec fgets.

Une petite question subsidiaire (qui méritera peut-être un topic...) : j'aime bien la console (surtout celle de Windows :love: ), mais je voudrais bien passer à quelque chose de plus abouti niveau interface. Mais je ne sais quelle librairie choisir : wxWidgets ? QT ? GTK+ ? J'aimerais bien une librairie multiplateforme et assez simple à utiliser. Laquelle me conseillez-vous ?

merci :) 
Lassé par la pub ? Créez un compte