getchar()函数的理解

准备工作:
struct _iobuf {
	char *_ptr;
	int   _cnt;
	char *_base;
	int   _flag;
	int   _file;
	int   _charbuf;
	int   _bufsiz;
	char *_tmpfname;
};
typedef struct _iobuf FILE;

_CRTIMP extern FILE _iob[];
//可见 _iob[]是FILE结构体的实例



具体理解:
#define getchar()	getc(stdin)
#define stdin  (&_iob[0])//此中的_iob[0]是上面提到的FILE实例中的一个,被操作系统已经初始化好了,用来操作缓存的!


#define getc(_stream)     (--(_stream)->_cnt >= 0 \		
                ? 0xff & *(_stream)->_ptr++ : _filbuf(_stream))
//  反斜杠的含义是是连接下一行!!!!!这里实现了getchar()的具体实现
//  存在字符则此宏由此字符返回,不存在则调用_filbuf(&_iob[0])来输入字符到缓冲区,并再次执行getchar()操作.
getchar()函数的功能:
执行getchar()时,当缓冲区有字符,则取第一个字符,当缓冲区没有字符,则让用户向缓冲区中输入(以enter或者eof结束),并取其中的第一个字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值