Bootstrap

C标准库函数-1 stdio.h

stdio.h

size_t:是由运算符sizeof产生的无符号整类型;
fpos_t:类型定义能够唯一说明文件中的每个位置的对象。
EOF:其值代表文件的结尾。

文件操作

fopen

FILE *fopen(const char *filename, const char *mode);
返回:成功为FILE指针,失败为NULL
打开以filename所指内容为名字的文件,返回与之关联的流。
mode决定打开的方式,以文本模式打开的可选值如下,以二进制模式打开的(rb\wb\ab\rb+\wb+\ab+)类似,不在赘述:
mode 含义 若文件不存在 打开后文件指针位置 是否清空原有内容 读写位置
r 只读 打开失败 开头 任意位置读取,不可写入
w 只写 新建 开头 不可读取,任意位置写入 写入时会覆盖原有位置内容
a 只写 新建 结尾 不可读取,只能尾部写入
r+ 读写 打开失败 开头 任意位置读、写 写入时会覆盖原有内容
w+ 读写 新建 开头 任意位置读、写 写入时会覆盖原有内容
a+ 读写 新建 结尾 任意位置读,只能尾部写入
注:带"+"号的,即可读可写模式下,在写操作和读操作的交替过程中,要注意使用fflush()或文件定位函数fseek()、fsetpos()、rewind()等重新定位文件指针的位置。

freopen

FILE *freopen(const char *filename, const char *mode, FILE *stream);
返回:成功为stream,失败为NULL
以mode指定的方式打开文件filename,并使该文件与流stream相关联。freopen()先尝试关闭与stream关联的文件,不管成功与否,都继续打开新文件。
该函数的主要用途是把系统定义的标准流stdin、stdout、stderr重定向到其他文件。

fread

size_t fread(void *buf, size_t size, size_t count, FILE *stream);
返回:实际读入的对象数
从流stream中读入最多count个长度为size个字节的对象,放到buf指向的数组中。
返回值可能小于指定读入数,原因可能是出错,也可能是到达文件尾。实际执行状态可用feof()或ferror()确定。

fwrite

size_t fwrite(const void *buf, size_t size, size_t count, FILE *stream);
返回:实际输出的对象数
把buf指向的数组中count个长度为size的对象输出到流stream中,并返回被输出的对象数。如果发生错误,则返回一个小于count的值。

fflush

int fflush(FILE *stream);
返回:成功为0,失败返回EOF
对输出流(写打开),fflush()用于将已写到缓冲区但尚未写出的全部数据都写到文件中;对输入流,其结果未定义。如果写过程中发生错误则返回EOF,正常则返回0。
fflush(NULL)用于刷新所有的输出流。
程序正常结束或缓冲区满时,缓冲区自动清仓。

fclose

int flcose(FILE *stream);
返回:成功为0,失败返回EOF
刷新stream的全部未写出数据,丢弃任何未读的缓冲区内的输入数据并释放自动分配的缓冲区,最后关闭流。

remove

int remove(const char *filename);
返回:成功为0,失败为非0值
删除文件filename。

rename

int rename(const char *oldfname, const char *newfname);
返回:成功为0,失败为非0值
把文件的名字从oldfname改为newfname。

tmpfile

FILE *tmpfile(void);
返回:成功为流指针,失败为NULL
以方式"wb+"创建一个临时文件,并返回该流的指针,该文件在被关闭或程序正常结束时被自动删除。

tmpnam

char *tmpnam(char s[L_tmpnam]);
返回:成功为非空指针,失败为NULL
若参数s为NULL(即调用tmpnam(NULL)),函数创建一个不同于现存文件名字的字符串,并返回一个指向一内部静态数组的指针。
若s非空,则函数将所创建的字符串存储在数组s中,并将它作为函数值返回。s中至少要有L_tmpnam个字符的空间。
tmpnam函数在每次被调用时均生成不同的名
;