fonctionnement getchar en C

fonctionnement getchar en C - C - Programmation

Marsh Posté le 05-11-2011 à 17:28:45    

Bonjour à tous, j' ai un projet à faire et dans mon programme je dois demander à l' utilisateur d' entrer un caractère entre A, R, Q, D,V,P et F.
J' ai donc essayé comme on a fait en cour de déclarer au début du programme dans le void main():
 

Citation :

char codemaj;


 
puis au moment où l' on demander à l' utilisateur d' entrer le code, je fais:
 

Citation :

printf("entrez le code de maj" );
codemaj=getchar();
switch(codemaj)
{case 'A': printf("blabla" );
break;
case 'R':
printf("ouaiouai" );
break;
}


 
Mais je ne sais pas pourquoi mon programme s' arrête après mon "printf("entrez le code de maj" );" , quelle est le problème? merci pour votre aide :)
 
 


---------------
Feedback1:http://forum.hardware.fr/hfr/AchatsVentes/Feedback/feed-back-arslan310-sujet_486576_1.htm
Reply

Marsh Posté le 05-11-2011 à 17:28:45   

Reply

Marsh Posté le 05-11-2011 à 17:59:12    

Qu'entends tu par  "mon programme s'arrête"? il plante?


---------------
Seul Google le sait...
Reply

Marsh Posté le 05-11-2011 à 18:32:14    

Il attends un caractère, c'est ambigu !  :o

Reply

Marsh Posté le 05-11-2011 à 19:40:17    

il plante oui mais avec un scanf("%s",...) ça marche donc je peux l' utiliser ?
Et je voulais aussi vous demander comment faire pour que le programme affiche un message d' erreur si on saisit un caractère différent de A R Q D V P F ??
il faut faire un if mais quoi mettre dedans ?


---------------
Feedback1:http://forum.hardware.fr/hfr/AchatsVentes/Feedback/feed-back-arslan310-sujet_486576_1.htm
Reply

Marsh Posté le 05-11-2011 à 20:59:08    

Chez moi ça marche (R)
 
Pour le message d'erreur, il y a un cas par défaut dans un switch

Code :
  1. switch ()
  2. {
  3.   ...
  4.   default:
  5.      printf("Erreur\n" );
  6. }


 
 

Code :
  1. #include <stdio.h>
  2. int main()
  3. {
  4.   char codemaj;
  5.   printf("entrez le code de maj" );
  6.   codemaj=getchar();
  7.   switch(codemaj)
  8.   {
  9.   case 'A':
  10.     printf("blabla" );
  11.     break;
  12.   case 'R':
  13.     printf("ouaiouai" );
  14.     break;
  15.   default:
  16.     printf("Default\n" );
  17.   }
  18.   return 0;
  19. }


 
En passant, void main(), tu as appris ça en cours?


---------------
deluser --remove-home ptitchep
Reply

Marsh Posté le 05-11-2011 à 21:35:57    

Ok merci je vais tester ça, void main() oui en cours pourquoi ?


---------------
Feedback1:http://forum.hardware.fr/hfr/AchatsVentes/Feedback/feed-back-arslan310-sujet_486576_1.htm
Reply

Marsh Posté le 05-11-2011 à 22:51:26    

Un programme est censé retourner une valeur à la fin de son exécution. Cela permet d'utiliser son code de retour pour enchaîner des commandes par exemple. Ou pour l'utiliser dans un script genre

Code :
  1. if monProg; then
  2.    suite
  3. else
  4.    erreur
  5. fi
  6.  
  7. make && make modules_install
  8.  
  9. ...


 
En fait, je pensais que le prototype void main() avait disparu depuis un siècle ou deux.
 
http://en.wikipedia.org/wiki/Main_ [...] nd_C.2B.2B
 
Bien sûr, c'est juste une bonne habitude à prendre, ça marche aussi en void...
Si ce n'est pas indiscret, tu suis quelle formation?


Message édité par ptitchep le 05-11-2011 à 22:53:04

---------------
deluser --remove-home ptitchep
Reply

Marsh Posté le 06-11-2011 à 13:04:08    

Je suis en DUT informatique à paris descartes


---------------
Feedback1:http://forum.hardware.fr/hfr/AchatsVentes/Feedback/feed-back-arslan310-sujet_486576_1.htm
Reply

Marsh Posté le 06-11-2011 à 22:05:09    

va falloir voir a en changer :o

Reply

Sujets relatifs:

Leave a Replay

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