#include int main() { char TurHare; while(1) { scanf("%c",TurHare); printf("\nCharacter :%c", TurHare); } return 0; }
Lorsque je comstack puis lance le programme, le résultat est le suivant:
w Character : w Character :
où w est l’entrée de la console.
Cela devrait ressembler à:
w Character : w
Comment faire?
Vous avez raté &.
réessayer avec
int main() { char TurHare; while(1) { scanf("%c",&TurHare); printf("\nCharacter :%c", TurHare); } return 0; }
Je recommande getch, getche, getchar à utiliser en cas de caractère, scanf vous mènera à un problème de mise en mémoire tampon
Ok, donc c’est à cause de la touche de retour que vous entrez après avoir entré w. ainsi, une fois qu’il lit w et un autre fois, il lit le caractère de fin de ligne.
Scanf (“% c”) pose un problème de mise en mémoire tampon. Beaucoup de gens utilisent fflush (stdin) pour résoudre, mais ce n’est pas ANSI.
void fflushstdin() { int c; while( (c=getchar())=='\n' ); if( c!=EOF ) ungetc(c,stdin); } main() { int TurHare; while( fflushstdin(), !feof(stdin)&&1==scanf("%c",&TurHare) ) { printf("\nCharacter :%c", TurHare); } return 0; }
Rompez la boucle avec ^ Z sous Windows et ^ D avec Unix / Linux.
Votre programme fait ce que vous lui dites, il sort les caractères que vous tapez.
Maintenant, quand vous entrez w
, regardez ce que vous faites. Vous appuyez sur 2 clés. la touche w
et Enter
. C’est la sortie que vous obtenez, w et une nouvelle ligne (à partir de la touche Entrée). Si vous ne voulez pas cela, par exemple
char TurHare; while(1) { if(scanf("%c",&TurHare) != 1) { //always check for errors break; //or some other error handling } if(c != '\n') { //or perhaps if(!isspace(c)) from printf("\nCharacter :%c", TurHare); fflush(stdout); } }