输入2次数据产生了两个回车,为什么getchar()接收了一个回车,而下面的scanf没有接收另一个回车?
更新时间:2021-09-18 11:04:41 • 作者:WILMA •阅读 8954
- 为什么C语言中输入后字符要按两次回车才能执行下面代码?
- 每次scanf不是要以回车结束的么?为何这么多scanf只用一次回车??
- 为什么这个程序要按两次的ENTER 键呢??
- 使用getchar()输入时,为什么要按两次回车键才能输出
为什么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()输入时,为什么要按两次回车键才能输出
没有那种情况,那是别的问题,没有代码不好具体说。