Tout premier porgramme en C. HELP !!

Signaler
Messages postés
39
Date d'inscription
mardi 5 juillet 2005
Statut
Membre
Dernière intervention
29 octobre 2008
-
Messages postés
246
Date d'inscription
mercredi 5 janvier 2005
Statut
Membre
Dernière intervention
11 mars 2012
-
Bonjour a TOUS!
Je viens de créer mon tout premier "programme" en C. Mais je ne suis pas sur que le code soit correcte. Est ce que vous pouvez me dire si c'est bon ce que j'ai fais, ou alors si y a moyen de le simplifier ou encore si vous avez des conseils pour l'améliorer (rajouter des options...)?
Merci d'avance.

voici le code :

#include <stdio.h>
main()
{
char lettre, choix;

printf("\t\t Bienvenue au programme de convertition de caractère.\n\n");
printf("-------MENU-------\n\n");
printf("Entrez :\n\n");
printf("\t a pour convertir un caractère en CODE ASCII\n");
printf("\t h pour convertir un caractère en HEXADECIMALE\n");
printf("\t o pour convertir un caractère en OCTALE\n\n");
printf("Votre choix:");
choix=getchar();
getchar();
printf("\nEntrez une lettre au clavier.\n");
scanf("%c",&lettre);
switch(choix)
{
case 'a': printf("Le Code ASCII de %c : %d", lettre , lettre);
break;
case 'h': printf("Le Code en HEXADECIMALE de %c : %#x", lettre , lettre);
break;
case 'o': printf("Le Code en OCTALE de %c : %#o", lettre , lettre);
break;
default:printf("Entrée incorrecte");
}
}

8 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
Je ne vois pas d'erreur (à part l'orthographe bien évidemment). Tu peux juste rassembler tous les printf du début en un seul
Messages postés
246
Date d'inscription
mercredi 5 janvier 2005
Statut
Membre
Dernière intervention
11 mars 2012

tu pourrais faire a la place de choix=getchar(); :

do

choix=getchar();

while(choix !='a' && choix!='h' && choix!='o');



comme ca tu est sur que la personne à entré une bonne commande.



Après, le prooblème de getchar() du moins je trouve, c'est qu'il attend
un retour de chariot. Tu peux remplacer par getch() qui n'attend pas le
retour. Par contre getch() se trouve dans conio.h et non stdio.h Il
faudra la rajouter. Ensuite, pourquoi remettre un getchar() après la
demande de choix ? Un seul suffisait paske la le gars va devoir appuyer
encore une fois sur entree.

<hr size="2" width="100%"> Qui ne tente rien...

Ne risque pas d'avoir grand chose !!!

<hr siz="">
Messages postés
1
Date d'inscription
dimanche 31 juillet 2005
Statut
Membre
Dernière intervention
31 juillet 2005

heu pour le 2eme getchar après choix=..... je crois ke c'est juste pour supprimer le \n du tampon parceke sinon, si il le supprimait pas, scanf ki vient après prend la valeur qu'il doit lire ds le tampon et comme il resterait le \n bah scanf demanderait rien à l'utilisateur et mettrait un \n ds la variable lettre.
je sais pas si c'est très clair mais je crois que c'est ça.
Messages postés
39
Date d'inscription
mardi 5 juillet 2005
Statut
Membre
Dernière intervention
29 octobre 2008

Merci pour vos réponses.
J'ai essayé

do
choix=getchar();
while(choix !='a' && choix!='h' && choix!='o');

et c'est vrai que c'est mieux.
Quant au deuxieme getchar() apres choix=getchar(), c'est pour supprimer le \n qui est dans la mémoire tampon.

Merci encore pour vos conseils...
Messages postés
246
Date d'inscription
mercredi 5 janvier 2005
Statut
Membre
Dernière intervention
11 mars 2012

Justement, en mettant getch() à la place de getchar() tu n'as pas de
'\n' qui traine dans le tampon, car effectivement, il me semble que
getchar() attend un '\n' mais sans le retirer du tampon. getch() par
contre attend seulement un caractère, sans '\n'.

<hr size="2" width="100%"> Qui ne tente rien...

Ne risque pas d'avoir grand chose !!!

<hr siz="">
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
Voila comment faire perdre du temps à un débutant avec des problèmes qui n'en sont pas. Dès qu'il en saura suffisemment, il quittera la console pour un truc plus évolué, et toutes ces histoires ne lui auront servi a rien. Les E/S en console c'est merdique et faut pas perdre son temps avec ca
Messages postés
39
Date d'inscription
mardi 5 juillet 2005
Statut
Membre
Dernière intervention
29 octobre 2008

oui j'ai lu qu'avec getch() y avait rien dans la memoire tampon vu qu il n'attendais pas de retour chariot. Seulement j'utilise Microsoft Visual C++ et la fonction getch n'est pas compatible avec ANSI-C et elle peut seulement être utilisée sous MS-DOS.

Y a peut etre une solution pour que je puisse l'utiliser?
Messages postés
246
Date d'inscription
mercredi 5 janvier 2005
Statut
Membre
Dernière intervention
11 mars 2012

Je voudrais tout de même savoir ce que vous avez contre le mode console
d'une part et contre getch() d'autre part, car je n'utilise OpenGL et
encore en console, depuis un mois, et avant ça g tjrs travaillé en
console (windows ou linux) avec getch() quand je pouvais car je trouve
cette fonction indispensable a qui veux faire un programme un tant soit
peu élaboré.

<hr size="2" width="100%"> Qui ne tente rien...

Ne risque pas d'avoir grand chose !!!

<hr siz="">