INFOS CARACTÈRES ASCII/VALEURS POUR LA CONSOLE

asmanur Messages postés 230 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 4 août 2005 - 15 oct. 2004 à 07:29
street_pc Messages postés 9 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 18 octobre 2004 - 18 oct. 2004 à 18:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/26822-infos-caracteres-ascii-valeurs-pour-la-console

street_pc Messages postés 9 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 18 octobre 2004
18 oct. 2004 à 18:34
Merci pour toutes ces précisions, je retindrai quand j'aurai besoin d'un code portable.
En attendant, les puristes peuvent toujours refaire ce code de façon portable et aux normes, toute belle, sans erreurs, etc.
Prévenez-moi si vous déposez une meilleur source du même programme, que je supprime celle-ci...
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 oct. 2004 à 11:49
ce qu'il faut comprendre c'est que les données d'un flux d'entré sont faites pour etre lues, donc vider le tampon associé c'est forcement une erreur de logique, d'autant plus que le standard ne definie aucun mode de bufferisation donc tu ne peux pas savoir a priori ce que tu vides, ce que tu perds

while( (c = fgetc( stdin )) != EOF && c != '\n' ); est une solution portable pour sauter tous les caracteres lu jusqu'a un '\n'


pour les saisie, le meilleur moyen de tout lire en sécurité est fgets + tableau + sizeof
street_pc Messages postés 9 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 18 octobre 2004
17 oct. 2004 à 14:59
ce code n'a aucune prétention en tant que source.
je l'ai codé à l'arrache en tant qu'utilitaire pour développeurs Dev-Cpp ou Borland sous Windows, je sais qu'il n' aucune portabilité, qu'il ne respecte aucune norme, etc.
mes programmes qui respectent une norme sont ceux que je fais en cours.
pour le zip, je ne préfère pas proposer un zip avec un exe comme je le faisais avant (manque justifié de confiace).

pour ceux qui veulent reprendre le code pour le rendre protable et aux normes, c'est avec plaisir que je remplacerai ce code par le leur (en indiquant leur nom bien sur) ou que je suprimerai celui-ci dès qu'un équivalent bien codé sera proposé sur cppfrance.

[BlackGoddess]
fflush(stdin); >> ceci est une faute logique : en effet stdin est en lecteur, tu ne peux donc normalement pas le modifier.
/BlackGoddess
exprime-toi plus clairement car il ne s'agit pas dune faute de logique. il n'a peut-être rien à faire ici mais il était bien pratique après un scanf("%c", ...) :D
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
15 oct. 2004 à 10:48
+1

pour les i/o c et c++, c'est dangereux et encore heureux que c'est synchros par defaut d'apres le standard, mais ca faut le savoir


//anciennement: scanf("%u", &cChoice);
cChoice = getch();
fflush(stdin);

en fait ya plusieurs erreurs de logique la, scanf et getch n'ont strictement rien a voir, getch lit le clavier et scanf stdin, et un fflush(stdin) apres un getch() n'a aucun sens

fflush(stdin) n'a aucune portabilité et est tres dangereux, le standard ne defini pas de comportement lorsque fflush recoit un flux d'entrée


on inclus jamais un .c, c'est anti productif

unsigned char c'est un entier non signé en c, pas la peine de caster inutilement
BlackGoddess Messages postés 338 Date d'inscription jeudi 22 août 2002 Statut Membre Dernière intervention 14 juin 2005
15 oct. 2004 à 09:33
du C avec des cout :o

je crois que conio.c n'est pas portable, et n'existe pas sur tout les compilo win.

sinon, il est mauvais de melanger les flux d'e/s du C et ceux du C++ (ils n'ont pas le meme fonctionnement interne, il faut s'attendre a des surprises ...)

fflush(stdin); >> ceci est une faute logique : en effet stdin est en lecteur, tu ne peux donc normalement pas le modifier.
asmanur Messages postés 230 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 4 août 2005
15 oct. 2004 à 07:29
J'au un peu regarder le code plusoeurs conseils:
-divise ton code en fonction pacre qu'utilisez des goto c bon pour le Basic mais pas pour le C++
-Si tu pouvais mettre un zip avec un exe ce serait plus pratique
Sinon j'ai pas eu le temps de tester a source.
Rejoignez-nous