Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
getchar未等待用户输入_C_Getchar - Fatal编程技术网

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

第二个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 ((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);