输入2次数据产生了两个回车,为什么getchar()接收了一个回车,而下面的scanf没有接收另一个回车?

6547℃ WILMA

输入2次数据产生了两个回车,为什么getchar()接收了一个回车,而下面的scanf没有接收另一个回车?

为什么C语言中输入后字符要按两次回车才能执行下面代码?

这具体要看楼主所说的代码是如何的了。

char ch;

scanf("%c",&ch);

printf("%c",ch);

很明显只要一次回车就可以执行下面代码的。

#include <stdio.h>

int main()

{ char ch;

  scanf("%c",&ch);

  printf("%c:%d",ch,ch);

  return 0;

}

每次scanf不是要以回车结束的么?为何这么多scanf只用一次回车??

scanf 从输入流缓冲区里 读取数值,如果输入缓冲区内已有数值,它就可以取用,如果缓冲区里 没有数值,或数的个数不足,scanf 就要等待。 这是第一点。

第2点,那么 缓冲区里 的数 从何而来?答:是从键盘 缓冲区里来。

键盘 缓冲区 的数据 只有当 遇到 回车键 时 才 送到 输入流缓冲区,否则 留在 键盘 缓冲区里,没到 输入流缓冲区里去。

这就是清楚了,并非 scanf 一定要等 回车,scanf 只是等 输入流缓冲区 有数好取。键盘一次拍入很多数,回一次车,输入流缓冲区就有了很多数,scanf就不需等待回车不回车了。

scanf 读数 以空白为数的分隔符,空格,回车属 空白。 回车 对 scanf 来说,是 数的分隔符。

为什么这个程序要按两次的ENTER 键呢??

scanf ("%d ",&ta);

%d 后面空格去掉试试。

使用getchar()输入时,为什么要按两次回车键才能输出

没有那种情况,那是别的问题,没有代码不好具体说。

TAG: 两个 数据