APUE编程:04---标准I/O库之(流的读、写、错误处理:getc()、getchar()、ungetc()、putc()、ferror)

一、单字符读和写

1.输入函数

#include <stdio.h>
int getc(FILE *fp);
int fgetc(FILE *fp);
int getchar(void);

//返回值:若成功则为下一个字符,若已处文件尾端或出错则为EOF

不同点:

①函数getchar等同于getc(stdin)

②前两个函数的区别是getc可被实现为宏,而fgetc则不能实现为宏。 这意味着:

  • getc的参数不应当是具有副作用的表达式,因为它可能被计算多次
  • 因为fgetc一定是个函数,所以可以得到其地址。这就允许将fgetc的地址作为一个参数传送给另一个函数
  • 调用fgetc所需时间很可能长于调用getc ,因为调用函数通常所需的时间长于调用宏

2.输出函数

#include <stdio.h>
int putc(int c, FILE *fp);
int fputc(int c, FILE *fp);
int putchar(int c);

//返回值:若成功则为 C,若出错则为EOF
  •  与输入函数一样,putchar(c) 等同于putc(c,stdout),putc可被实现为宏,而fputc则不能实现为宏

3.字符回送函数

#include <stdio.h>
int ungetc(int c, FILE *fp);

//返回:若成功则为C,若出错则为EOF
  • 功能:从一个流读之后,可以调用ungetc将字符再送回流中

注意事项:

  • 送回到流中的字符以后又可从流中读出,但读出字符的顺序与送回的顺序相反
  • 回送的字符,不一定必须是上一次读到的字符。 EOF不能回送
  • 回送的字符,并没有将它们写到底层文件中或设备上,只是将他们写回标准IO库的流缓冲区中
  • 但是当已经到达文件尾端 时,仍可以回送一字符。下次读将返回该字符,再次读则返回EOF。之所以能这样做的原因是一次成功的ungetc调用会清除该流的文件结束指示

应用场景

待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

董哥的黑板报

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

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

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

打赏作者

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

抵扣说明:

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

余额充值