在C语言中,对文件的操作都通过标准库中的函数或宏来进行。标准库不是C语言本身的构成部分,但是支持标准C的实现都会提供该函数库中的函数声明、类型以及宏定义。比如,与文件操作相关的函数都定义在输入输出头文件<stdio.h>中。
流、缓存和文件
流(stream)不是缓存,也不等于文件。流是一种逻辑的、与设备无关的操纵多种外设方式,它把数据输入输出的操作对象(如磁盘文件或是物理设备的打印机、显示器、键盘等)都抽象化为一种“流”而不管其具体结构,这样涉及到流的操作函数都可用于各种对象,提高了编程的通用性。《C程序设计语言》中说“流是与磁盘或其他外围设备关联的数据的源或目的地,打开一个流,将把该流与一个文件或设备连接起来,关闭流将断开这种连接”。从代码的实现上来看,一个流可以由一个FILE结构来描述,而FILE结构里包含了指向缓冲区的指针和文件描述符,打开一个流时它通过指向缓冲区的指针和文件描述符来和缓存与文件(或设备)关联。更多的介绍还可以看这里和这里。
文件操作函数
FILE *fopen(const char *filename, const char *mode)
fopen函数打开filename指定的文件,并返回一个与之相关联的流。如果打开操作失败,则返回NULL。
继续阅读