Tout premier porgramme en C. HELP !!

juancho2786 Messages postés 39 Date d'inscription mardi 5 juillet 2005 Statut Membre Dernière intervention 29 octobre 2008 - 31 juil. 2005 à 17:50
mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012 - 31 juil. 2005 à 22:21
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

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
31 juil. 2005 à 18:10
Je ne vois pas d'erreur (à part l'orthographe bien évidemment). Tu peux juste rassembler tous les printf du début en un seul
0
mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012
31 juil. 2005 à 18:13
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="">
0
XpawN Messages postés 1 Date d'inscription dimanche 31 juillet 2005 Statut Membre Dernière intervention 31 juillet 2005
31 juil. 2005 à 19:44
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.
0
juancho2786 Messages postés 39 Date d'inscription mardi 5 juillet 2005 Statut Membre Dernière intervention 29 octobre 2008
31 juil. 2005 à 19:51
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012
31 juil. 2005 à 20:34
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="">
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
31 juil. 2005 à 20:47
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
0
juancho2786 Messages postés 39 Date d'inscription mardi 5 juillet 2005 Statut Membre Dernière intervention 29 octobre 2008
31 juil. 2005 à 21:44
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?
0
mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012
31 juil. 2005 à 22:21
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="">
0