gpt4 book ai didi

无法在简单的 C 代码片段中使用 2 个 getchar() 函数

转载 作者:行者123 更新时间:2023-11-30 14:50:22 24 4
gpt4 key购买 nike

我在编程方面有点菜鸟,尤其是在 C 语言方面。我正在尝试一些代码来了解有关 C 语法的更多信息。这是我的问题:为什么下面的代码片段中的第二个 getchar() 不起作用?我的意思是我想控制台等待,直到我输入然后完成。

#include<stdio.h>
#include<curses.h>

int main() {
char ch = getchar();
getchar();

return 0;
}

PS:我使用的是ubuntu 17.10。

最佳答案

正如评论中提到的,您正在输入两个字符。字母 a 和换行符 (\n)。显示第二个 getchar() 接受 \n

如果您想使用第二个 getchar(),那么在使用它之前使用 fflush(stdin)。fflush(stdin) 通常会删除(刷新)这种类型的额外字符(在您的情况下为 \n)。或者你可以按如下操作

#include<stdio.h>
#include<curses.h>

int main() {
char ch;
printf("Enter a charcter: ");
ch = getchar();
printf("\nyou typed the character ");
putchar(ch);
while ((getchar()) != '\n'); //fflush(stdin); /* use this*/
getchar();

return 0;
}

这里“while ((getchar()) != ‘\n’);”读取缓冲区字符直到末尾并丢弃它们(包括换行符),并在“scanf()”语句清除输入缓冲区并允许在所需容器中输入后使用它。

另请参阅以下链接。

  1. Replacement of fflush(stdin)
  2. Alternative to C library-function fflush(stdin)
  3. Using fflush(stdin)
  4. Clearing The Input Buffer In C/C++

关于无法在简单的 C 代码片段中使用 2 个 getchar() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49045514/

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