在接受用户输入时,如何在c编程中忽略enter按钮作为一个字符?

在接受用户输入时,如何在c编程中忽略enter按钮作为一个字符?,c,input,while-loop,C,Input,While Loop,看看这个例子: #include<stdio.h> int main() { char ch; while(scanf("%c", &ch)) { if(ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u' || ch == 'A' || ch == 'E' || ch == 'I'

看看这个例子:

#include<stdio.h>
int main()
{
    char ch;
    while(scanf("%c", &ch))
    {
        if(ch == 'a' || ch == 'e' || ch == 'i' ||
                ch == 'o' || ch == 'u' || ch == 'A' ||
                ch == 'E' || ch == 'I' || ch == 'O' ||
                ch == 'U')
        {
            printf("It's Vowel\n");
        }
        else if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
        {
            printf("It's Consonant\n");
        }
        else
        {
            printf("Wrong Input/ It's not Alphabet\n");
        }
    }
    return 0;
}
#包括
int main()
{
char ch;
while(scanf(“%c”和“ch))
{
如果(ch='a'| | ch='e'| | ch='i'||
ch='o'| | ch='u'| | ch='A'||
ch='E'| | ch='I'| | ch='O'||
ch==‘U’)
{
printf(“它的元音\n”);
}
如果((ch>='a'&&ch='a'&&ch
我认为这个输出的原因是,编译器接受字符,也接受回车键作为字符

不是编译器接受字符。获取输入是一个运行时操作。当程序已经运行时,编译器的工作已经完成了很多,但除此之外,您的猜测是正确的。这是因为
scanf()
不使用第一步按Enter键生成的换行符

这个换行符在下一次迭代时被
scanf(“%c”,&ch))
读取,由于换行符是合法字符,所以它存储在
ch

有没有办法解决这个问题

使用

而不是

while(scanf("%c", &ch))

请注意
%c
之前的空白字符(
'
)。这将从上一次迭代中提取
stdin
中保留的废弃换行字符。

如果(ch='\n')break;
或者
while(scanf(%c',&ch))
-->
while(scanf(%c',&ch))添加一个测试
。检测到
'\n'
后,您希望发生什么?非常感谢!!我从您的答案中找到了解决方案。非常感谢!!我从您的答案中找到了解决方案。@AlamgirHossain如果您认为此答案是最有帮助的答案或解决了您的问题,请随意。谢谢。
while(scanf("%c", &ch))