缓冲区里保留所有从键盘打入的键,包括空格,空白键,回车。
输入语句 scanf(),gets(), ...都是到 缓冲区 里 按语法规则 读东西,转换内容。
当 缓冲区 里 内容 用完了,或不够 输入语句 用 时,输入语句 等待....。
从键盘打入的东西,只有当遇到 Enter 键 时,才 通过 操作系统 进 缓冲区,没遇到 Enter 键不进 (或者说scanf(),gets(), 等语句,没遇到 Enter 键输入事件发生时,不开始工作)。
空白和回车何时被用掉与读语句种类和读法读的格式有关。
gets() 是读一行字符串,包括在前在后在半当中的 空格,空白,....
scanf("%d",&k); 和 scanf("%d\n",&k); 不同。后者可以吃掉一个 Enter 键。
简单保险的办法是用 fflush(stdin); 清除 输入缓冲区。你就 不用担心 输入行 残留 的数字,字符,空白和Enter 键:
scanf(。。。); fflush(stdin); 再 gets();
关于scanf 保留回车在缓冲区的解决办法
最新推荐文章于 2023-03-12 13:11:15 发布
本文介绍计算机程序中如何处理从键盘输入的数据,特别是输入缓冲区的工作原理。文章详细解释了不同输入函数如scanf()和gets()如何从缓冲区读取内容,并讨论了如何使用fflush(stdin)来清空输入缓冲区,避免潜在的问题。
4929

被折叠的 条评论
为什么被折叠?



