加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Advanced Programming in UNIX Environment Episode 21

发布时间:2020-12-15 20:09:00 所属栏目:安全 来源:网络整理
导读:一旦打开了流,有三种方式。 (1)每次一个字符的I/O。 (2)每次一行的I/O。 (3)直接I/O。 直接I/O(direct I/O)这个属于来自ISO C标准,有时也被称为:二进制I/O、一次一个对象I/O、面向记录的I/O或面向结构的I/O。 输入函数 #include stdio.h int getc

一旦打开了流,有三种方式。
(1)每次一个字符的I/O。
(2)每次一行的I/O。
(3)直接I/O。

直接I/O(direct I/O)这个属于来自ISO C标准,有时也被称为:二进制I/O、一次一个对象I/O、面向记录的I/O或面向结构的I/O。

输入函数

#include <stdio.h>

int getc(FILE *fp);
int fgetc(FILE *fp);
int getchar(void);

函数getchar等同于getc(stdin)。前两个函数的区别是,getc可被实现为宏,而fgetc不能实现为宏。则:
(1)getc的参数不应当是具有副作用的表达式,因为他可能会被计算多次。
(2)因为fgetc一定是个函数,所以可以得到其地址。这就允许将fgetc的地址作为一个参数传送给另一个函数。
(3)调用fgetc所需时间很可能比调用getc要长,因为调用韩束所需要的时间通常长于调用宏。

为了区分必须调用ferror或feof。

#include <stdio.h>

int ferror(FILE *fp);
int feof(FILE *fp);

void clearerr(FILE *fp);

维护了两个标志:
* 出错标志
* 文件结束标志

调用clearerr可以清除这两个标志。
调用ungetc将字符再压送回流中。

#include <stdio.h>

int ungetc(int c, FILE *fp);

压送回到流中的字符以后又可以从流中读出,但读出字符的顺序与压送回的顺序相反。

用ungetc压送回字符时,并没有将它们写到底层文件中或设备上,只是将它们协会标准I/O库的流缓冲区中。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读