趣学 C 语言(十二)—— 文件操作

来源:互联网 发布:实验室洗眼器 淘宝 编辑:程序博客网 时间:2024/05/22 14:15

对于 C 语言而言,无论是标准输入 stdin,还是标准输出 stdout,还是标准错误输出 stderr,本质上都是一种文件操作,只不过读写的文件变成了控制台(console),或者说 stdin/stdout/stderr 是一种特殊的文件流,这三者出现的地方都可替换为相应的文件操作。

printf(const char *, ...) == fprintf(stdout, const char *, ...)scanf(const char*, ...) == fscanf(stdin, const char *, ...)

控制台是特殊的文件,理论上,凡是针对控制台的读写操作,都是转化为对相应文件流的文件操作,控制台输入 ⇒ stdin,控制台输出 ⇒ stdout,控制台错误输出 ⇒ stderr。

FILE 结构体

#ifndef _FILE_DEFINEDstruct _iobuf {        char *_ptr;        int   _cnt;        char *_base;        int   _flag;        int   _file;        int   _charbuf;        int   _bufsiz;        char *_tmpfname;        };typedef struct _iobuf FILE;#define _FILE_DEFINED#endif

文件缓冲系统

C 语言对文件的操作使用了缓冲文件系统,所谓缓冲文件系统是指系统自动在内存之中,为每一个正在使用的文件开辟一个缓冲区,从内存向磁盘输出数据必须先送到内存中的缓冲区装满缓冲区之后才一起送到磁盘区。读取也是如是。

如果想要即可写入到磁盘,

fclose(fp);

关闭文件,表示文件写入操作已经完成。

如果在 fclose 关闭文件之后,还想继续写入的话,就需再次打开,十分不便,有时我们需要对文件进行多次操作,但我们不希望每次操作都关闭文件,此时我们可利用另一个文件操作,

fflush(fp);

刷新缓冲区,将缓冲区的数据写入磁盘上的文件。

0 0
原创粉丝点击