我正在尝试制作一个简单的代码,该代码将从输入中读取一个字符并执行“正确”或“错误输入”,然后再次运行该代码,直到输入正确的输入为止。首先,它不适用于大写X。我要解决的另一个问题是,在输入错误之后,我必须按Enter键才能获得“ Enter x”消息,而不是在输入错误消息后立即进入。
#include <stdio.h>
int main()
{
do
{
printf("Enter x\n");
if (getchar()=='x'|| getchar()=='X')
{
printf("Entered char is X\n");
return 0;
}
else
{
printf("Input incorrect! Please try again!!!\n");
}
}
while (getchar()!='x' || getchar()!='X');
return 0;
}
最佳答案
当您按下ENTER
键时,换行符\n
将放置在输入缓冲区中。您需要使用该换行符才能读取下一个字符。
另外,您正在阅读两次,在这种情况下这是不必要的。所以你的代码应该是这样的
#include <stdio.h>
int main()
{
char inp;
do
{
printf("Enter x\n");
inp = getchar();
getchar(); // reading the newline character '\n'
if (inp == 'x'|| inp =='X')
{
printf("Entered char is X\n");
return 0;
}
else
{
printf("Input incorrect! Please try again!!!\n");
}
}
while (inp !='x' || inp !='X');
return 0;
}
p.s不需要将条件检查放入while循环,因为您要返回if条件。
while(true)
可以正常工作。感谢@bruno指出这一点。关于c - 如何解决-使用getchar()和do-while意外输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55373857/