INFOS CARACTÈRES ASCII/VALEURS POUR LA CONSOLE

Signaler
Messages postés
230
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
4 août 2005
-
Messages postés
9
Date d'inscription
mardi 23 mars 2004
Statut
Membre
Dernière intervention
18 octobre 2004
-
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

Messages postés
9
Date d'inscription
mardi 23 mars 2004
Statut
Membre
Dernière intervention
18 octobre 2004

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...
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
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
Messages postés
9
Date d'inscription
mardi 23 mars 2004
Statut
Membre
Dernière intervention
18 octobre 2004

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
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
+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
Afficher les 6 commentaires