因此。在C,unix中编写应用程序,并且我有函数,它在输入有效之前请求用户输入。 让我们直截了当:
int inputX()
{
int result;
char input;
while(1)
{
printf("Input x (a, b, c, d, e, f, g, h) :");
scanf("%c", &input);
result = validChar(input);
if (result >= 0)
{
return result;
}
else
{
printf("Invlid input. Lets try again.\n");
}
}
}
validChar()检查输入是否为-h。 如果我输入 - 一切都很好。 如果我输入例如1,输出
Input x (a, b, c, d, e, f, g, h) :1
Invlid input. Lets try again.
Input x (a, b, c, d, e, f, g, h) :Invlid input. Lets try again.
Input x (a, b, c, d, e, f, g, h) :
我甚至试过睡觉(),但没有工作.. C很棘手:|
答案 0 :(得分:4)
使用这个便宜的技巧来摆脱缓冲区中留下的空白:
scanf(" %c", &input);
^
答案 1 :(得分:0)
将scanf
与%c
一起使用会让它吃掉任何角色。第二次运行可能是您输入的换行符。
答案 2 :(得分:0)
第一个电话会选择1
。第二个电话会选择\n
。读完整行并在之后解析。