scanf()离开缓冲区中的新行char?

我正在学习C并提出一些问题。我知道我的问题可能是一个常见的问题,但我找不到答案。
我有以下程序:

int main(int argc, char *argv[])
{
  int a, b;
  char c1, c2;
  printf("Enter something: ");
  scanf("%d",&a); // line 1
  printf("Enter other something: ");
  scanf("%d", &b); // line 2

  printf("Enter a char: "); 
  scanf("%d",&c1); // line 3
  printf("Enter other char: ");
  scanf("%d", &c2); // line 4

  printf("Done"); // line 5

  system("PAUSE");  

  return 0;
}

当我在C书中阅读时,作者说scanf()在缓冲区中留下一个新的行字符,因此,程序不会在第4行停止,用户输入数据,而是将新的行字符存储在c2中并移动到第5行。

是对的吗?

但是,我想知道这只是用char数据类型发生的?因为我没有看到int数据类型的这个问题,如第1,第2,第3行。是对的吗?

scanf函数在尝试解析除字符之外的其他内容时会自动删除空格。字符格式(主要是%c)是异常;他们不会删除空格。
http://stackoverflow.com/questions/5240789/scanf-leaves-the-new-line-char-in-buffer

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:scanf()离开缓冲区中的新行char?