getc、fgetc、getchar、ungetc

20 篇文章 0 订阅

fgetc, fgets, getc, getchar, ungetc - input of characters and strings

#include <stdio.h>

int getc(FILE *stream);
int fgetc(FILE *stream);
int getchar(void);
//Returns: next character if OK, EOF on end of file or error

getc可以用宏(macro)实现
fgetc一定不用宏实现
getchar等效于getc(stdin)

getcfgetc之间的差别,意味着三件事:
1. getc的参数一定不能是有副作用的表达式
2. 可以使用fgetc的地址,作为函数指针传入其他function
3. 调用fgetc消耗的时间比getc

这三个函数都是将unsigned char转换为int,因为EOF通常为负数(定义在stdio.h,有的系统采用-1),int才能装的下。

为了辨别产生EOF是因为文件尾还是错误,我们需要使用ferror,feof来判断

ferror,feof

链接:http://blog.csdn.net/feather_wch/article/details/50696783

ungetc-push back a character

能向流stream中放回一个字符

#include <stdio.h>

int ungetc(int c, FILE *stream);

尽管ISO C支持放回任何个的字符,但是实现中我们不应该放回超过一个字符。
我们不能push back一个EOF字符。
如果我们达到了文件的结尾,可以放入字符。下一次可以将该字符读取出来,接下来再读取会读取出EOF

注意

不能使用ungetc将字符放回文件或者设备,因为它们保存在标准IO库的缓冲区中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猎羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值