getchar未等待用户输入
第二个getchar函数没有等待用户输入。无法找出以下代码中缺少的内容getchar未等待用户输入,c,getchar,C,Getchar,第二个getchar函数没有等待用户输入。无法找出以下代码中缺少的内容 char ch = 'n'; bool status = false; printf("%s", "Some text1\n"); ch = getchar(); if ((ch == 'Y') || (ch == 'y')) { status = true; } if(status) { printf("%s", "Some text2\n"); ch = getchar(); if
char ch = 'n';
bool status = false;
printf("%s", "Some text1\n");
ch = getchar();
if ((ch == 'Y') || (ch == 'y'))
{
status = true;
}
if(status)
{
printf("%s", "Some text2\n");
ch = getchar();
if ((ch == 'Y') || (ch == 'y'))
{
status = eNoError;
}
}
那是因为一个换行符 当您输入第一个
'Y'
时,实际上输入了一个类似“Y\n”
的字符串
首先getchar()
读取'Y'
,而'\n'
位于缓冲区中。
因此第二个
getchar()
获取'\n'
字符。这是因为换行符
当您输入第一个'Y'
时,实际上输入了一个类似“Y\n”
的字符串
首先getchar()
读取'Y'
,而'\n'
位于缓冲区中。
因此,第二个
getchar()
获取该'\n'
字符。很抱歉,我将发布此帖子,以防其他人遇到此问题并希望得到更好的答案。最简单的方法是在第一个getchar和第二个getchar之间的某个位置刷新输入:
ch = getchar();
fflush(stdin); // can be anywhere in between the getchar() calls
ch = getchar();
希望这有助于某人向前迈进很抱歉,我要发表这篇文章,以防其他人遇到这个问题并希望得到更好的答案。最简单的方法是在第一个getchar和第二个getchar之间的某个位置刷新输入:
ch = getchar();
fflush(stdin); // can be anywhere in between the getchar() calls
ch = getchar();
希望这能帮助某人向前迈进类似@Jeyaram:你的链接解决了我的问题。Thanks@impulse注意:
getchar()
返回一个int
。所以,ch
应该是一个int
。类似@Jeyaram:你的链接解决了我的问题。Thanks@impulse注意:getchar()
返回一个int
。所以,ch
应该是一个int
。好的。我是否需要另一个getchar()来获取输入?或者有更好的方法来处理这个问题吗?我相信克服这个问题的最简单的方法是使用scanf(“%c”,&c)
,因为每个getchar.do{c=getchar();}while(c!='\n'&&c!=EOF);好啊我是否需要另一个getchar()来获取输入?或者有更好的方法来处理这个问题吗?我相信克服这个问题的最简单的方法是使用scanf(“%c”,&c)
,因为每个getchar.do{c=getchar();}while(c!='\n'&&c!=EOF);