gpt4 book ai didi

c - 使用 getch() 和 getchar() 清除输入缓冲区的区别?

转载 作者:行者123 更新时间:2023-12-04 02:24:58 24 4
gpt4 key购买 nike

代码 1:-

char ch1, ch2;

printf("Input the first character:");

scanf("%c", &ch1);

while(getchar()!='\n');

printf("Input the second character:");

ch2 = getchar();

在这种情况下 while(getchar()!='\n');,清除第一次输入时按下 enter-key 的效果。

代码 2:-

char ch1, ch2;

printf("Input the first character:");

scanf("%c", &ch1);

while(getch()!='\n');

printf("Input the second character:");

ch2 = getchar();

在这种情况下 while(getch()!='\n');,不会清除第一次输入时按下 enter-key 的效果。结果证明循环是无限的。

在这种情况下,getch()getchar() 的功能有何不同?

最佳答案

来自 man getch:

Note that some keys may be the same as commonly used control keys, e.g., KEY_ENTER versus control/M, KEY_BACKSPACE versus control/H. Some curses implementations may differ according to whether they treat these control keys specially (and ignore the terminfo), or use the terminfo definitions. Ncurses uses the terminfo definition. If it says that KEY_ENTER is control/M, getch will return KEY_ENTER when you press con- trol/M.

这意味着 getch() 在读取回车键时返回 KEY_ENTER 而不是 '\n' ,因此您的 while 循环永远不会终止。

关于c - 使用 getch() 和 getchar() 清除输入缓冲区的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22540869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com