鱼C论坛

 找回密码
 立即注册
查看: 1021|回复: 3

[已解决]关于循环内部的getchar()是怎么执行的

[复制链接]
发表于 2020-6-28 14:27:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
先附上代码


#include <stdio.h>
int main(void)
{
        for(char ch; (ch = getchar()) != '\n' ;)
        {
                printf("%c\n",ch);
        }

        return 0;
}


运行结果是这样的
QQ截图20200628141631.jpg
但为什么是先一次性吧字符串输入,等接收到‘\n’再逐一输出,而不是


a(输入) printf:a(输出)‘回车’
b(输入) printf:b(输出)‘回车’
c(输入) printf:c(输出)‘回车’
'\n' 结束



这样输入一个字符循环一圈之后判断,再读取另一个字符直到遇到‘\n’
最佳答案
2020-6-28 14:57:09
getchar()使用说明:getchar()有一个int型的返回值.当程序调用getchar()时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后, getchar()才开始从stdio流中每次读入一个字符. getchar()函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar()调用读取.也就是说,后续的getchar()调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.
getch()与getchar()基本功能相同,差别是getch()直接从键盘获取键值,不等待用户按回车,只要用户按一个键, getch()就立刻返回, getch()返回值是用户输入的ASCII码,出错返回-1.输入的字符不会回显在屏幕上. getch()函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch()函数暂停程序运行,当按任意键后程序继续运行.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-28 14:30:00 | 显示全部楼层
因为有缓冲区
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-28 14:57:09 | 显示全部楼层    本楼为最佳答案   
getchar()使用说明:getchar()有一个int型的返回值.当程序调用getchar()时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后, getchar()才开始从stdio流中每次读入一个字符. getchar()函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar()调用读取.也就是说,后续的getchar()调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.
getch()与getchar()基本功能相同,差别是getch()直接从键盘获取键值,不等待用户按回车,只要用户按一个键, getch()就立刻返回, getch()返回值是用户输入的ASCII码,出错返回-1.输入的字符不会回显在屏幕上. getch()函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch()函数暂停程序运行,当按任意键后程序继续运行.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-28 14:57:12 | 显示全部楼层
每次执行循环都会先执行ch=getchar()这个语句,即将缓冲区内的第一个字符赋值给ch;
然后再对ch进行判断,如果这次赋值的不为回车符就打印ch;
程序第一次进循环之前,会由于ch=getchar()这个语句等待用户输入;
当你输入完之后回车,getchar()会依次从你输入的字符中读取,每次读取完一个就丢弃一个。直到读取到回车后,
由于循环条件设置程序结束。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 13:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表