scanf给出随机行为

时间:2015-12-23 06:02:15

标签: c scanf

有人能解释我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); 
  }

}

1 个答案:

答案 0 :(得分:0)

%c说明符适用于不属于int数据类型的字符。对数据类型使用错误的格式说明符会调用未定义的行为。

另请注意,i在第二个循环中没有递增。这将导致无限while循环。