juancho2786
Messages postés39Date d'inscriptionmardi 5 juillet 2005StatutMembreDernière intervention29 octobre 2008
-
31 juil. 2005 à 17:50
mondrone
Messages postés246Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention11 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");
}
}
mondrone
Messages postés246Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention11 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.
XpawN
Messages postés1Date d'inscriptiondimanche 31 juillet 2005StatutMembreDernière intervention31 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.
mondrone
Messages postés246Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention11 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'.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 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
juancho2786
Messages postés39Date d'inscriptionmardi 5 juillet 2005StatutMembreDernière intervention29 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?
mondrone
Messages postés246Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention11 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é.