请考虑以下代码:
#include<stdio.h>
void main()
{
int p = 0;
char a = 0;
while(p == 0)
{
p = scanf("%[abc]c",&a);
}
printf("%c",a);
}
我知道如果您输入除'a'
,'b'
或'c'
以外的字符,则输入中获取字符的值不会设置到变量a
中。
问题是指如果输入除指定字符之外的值,则上述循环永远不会终止。显然,在scanf
中获取未指定的字符后,它将不会在以下循环迭代中获得任何字符。 这个问题的根源在哪里?