有人能解释我scanf的工作吗?如果我输入s作为整数它将工作正常,但我输入一个字符,它将持续运行,直到它退出循环。所以它不是从缓冲区中删除字符而不是要求输入。您能否提供有关scanf及其内部实施的更多信息
#include<stdio.h>
int main()
{
int s,i = 0;
while(i < 10)
{
scanf("%d",&s);
i++;
printf("%d",s);
}
while(i < 20)
{
printf("%d",s);
scanf("%c",&s);
}
}
答案 0 :(得分:0)
%c
说明符适用于不属于int
数据类型的字符。对数据类型使用错误的格式说明符会调用未定义的行为。
另请注意,i
在第二个循环中没有递增。这将导致无限while
循环。