需要#include <stdio.h>,
打开文件
FILE *fopen(const char *filename, const char *mode);
filename : 文件的地址
mode:
"r" | 打开一个用于读取的文件。该文件必须存在。 |
"w" | 创建一个用于写入的空文件。如果文件名称与已存在的文件相同,则会删除已有文件的内容,文件被视为一个新的空文件。 |
"a" | 追加到一个文件。写操作向文件末尾追加数据。如果文件不存在,则创建文件。 |
"r+" | 打开一个用于更新的文件,可读取也可写入。该文件必须存在。 |
"w+" | 创建一个用于读写的空文件。 |
"a+" | 打开一个用于读取和追加的文件。 |
当打开文件正确时返回一个 FILE 指针。否则返回 NULL
设置编辑或查找的起始位置
int fseek(FILE *stream, long int offset, int whence)
stream:指向 FILE 对象的指针,该 FILE 对象标识了流。
offset: 相对 whence 的偏移量,以字节为单位。
whence: 开始添加偏移 offset 的位置。:
SEEK_SET | 文件的开头 |
SEEK_CUR | 文件指针的当前位置 |
SEEK_END | 文件的末尾 |
成功返回零,否则返回非零值。
获取文件的大小
long int ftell(FILE *stream)
stream:指向 FILE 对象的指针,该 FILE 对象标识了流。
返回位置标识符的当前值。如果发生错误,则返回 -1L,全局变量 errno 被设置为一个正值
读取文件
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
ptr:指向带有最小尺寸 size*nmemb 字节的内存块的指针。
size:要读取的每个元素的大小,以字节为单位。
nmemb:元素的个数,每个元素的大小为 size 字节。
stream: 指向 FILE 对象的指针,该 FILE 对象指定了一个输入流
返回一个 size_t 对象,表示元素的总数,该对象是一个整型数据类型。如果该数字与 nmemb 参数不同,则会显示一个错误。
按行来读取
char *fgets(char *str, int n, FILE *stream)
str:这是指向一个字符数组的指针,该数组存储了要读取的字符串。
n :这是要读取的最大字符数(包括最后的空字符)。通常是使用以 str 传递的数组长度。
stream: 指向 FILE 对象的指针,该 FILE 对象指定了一个输入流
文件写入
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
ptr:指向带有最小尺寸 size*nmemb 字节的内存块的指针。
size:要读取的每个元素的大小,以字节为单位。
nmemb:元素的个数,每个元素的大小为 size 字节。
stream: 指向 FILE 对象的指针,该 FILE 对象指定了一个输入流
返回一个 size_t 对象,表示元素的总数,该对象是一个整型数据类型。如果该数字与 nmemb 参数不同,则会显示一个错误。
int fputs(const char *str, FILE *stream)
str:这是指向一个字符数组的指针,该数组存储了要读取的字符串。
stream: 指向 FILE 对象的指针,该 FILE 对象指定了一个输入流
检测是否到达文件的结束位置
int feof(FILE *stream)
当设置了与流关联的文件结束标识符时,该函数返回一个非零值,否则返回零
关闭文件
int fclose(FILE *stream)
stream: 指向 FILE 对象的指针,该 FILE 对象指定了一个输入流
流成功关闭,则该方法返回零。如果失败,则返回 EOF。