I/O函数(printf( )、scanf( )、getchar()、putchar())

getchar()、putchar()

getchar和putchar是单字符I/O函数,为什么不是一个一个输出而是把整个字符都输出了?

这就要了解一下缓冲区了。缓冲区的大小取决于系统,常见的大小有512字节和4096字节。

在键盘上输入出现换行符(按下Enter键)时刷新缓冲区。这些函数从缓冲区拿字符而不是直接能收到来自键盘上的字符,当“1234asdf”存入缓冲区,getchar()开始拿字符,putchar()进行输出,直到把缓冲区内的字符清空为止,这也就是为什么不用一个一个从键盘上输入再输出。

从缓冲区拿而不是直接接收来自键盘上的字符。

 当我们从键盘上输入1时循环却执行了两次,这是因为缓冲区里有两个字符,后面的换行符“Enter"也做为字符进入缓冲区,所以进行了两次循环。

 

 如果要输入一次循环一次就要把最后的换行符消耗掉,改成这样。

跳过剩余的输入行

 

 getchar和scanf都能处理字符但是不能把它们搞混,因为getchar读取每个字符,包括空格、制表符和换行符;而scanf在读取数字时则会跳过空格、制表符和换行符。

 putchar和printf都能进行输出但putchar只能单个字符输出而printf功能就比putchar功能要强大了,配合转换说明使用就可以打印出你想要打印的效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值