C 库函数 FILE *fopen(const char *filename, const char *mode) 使用给定的模式 mode 打开 filename 所指向的文件。
下面是 fopen() 函数的声明。
FILE *fopen(const char *filename, const char *mode)
模式 | 描述 |
---|---|
"r" | 打开一个用于读取的文件。该文件必须存在。 |
"w" | 创建一个用于写入的空文件。如果文件名称与已存在的文件相同,则会删除已有文件的内容,文件被视为一个新的空文件。 |
"a" | 追加到一个文件。写操作向文件末尾追加数据。如果文件不存在,则创建文件。 |
"r+" | 打开一个用于更新的文件,可读取也可写入。该文件必须存在。 |
"w+" | 创建一个用于读写的空文件。 |
"a+" | 打开一个用于读取和追加的文件。 |
该函数返回一个 FILE 指针。否则返回 NULL,且设置全局变量 errno 来标识错误。
#include <stdio.h>
int main(){
FILE *fp = NULL;
// 定义一个指针变量,默认为空,指针变量格式星号开头
fp = fopen("test.txt", "r+");
// 指针变量为 fopen 打开一个文件 指定文件名和打开模式函数:r 读取
fprintf(fp, "This is testing for fprintf...\n");
// 将字符串写入文件:$fp 是 test.txt
fseek(fp, 10, SEEK_SET);
if (fputc(65,fp) == EOF) {
printf("fputc fail");
}
fclose(fp);
}
fseek 可以移动文件指针到指定位置读,或插入写:
int fseek(FILE *stream, long offset, int whence);
fseek 设置当前读写点到 offset 处, whence 可以是 SEEK_SET,SEEK_CUR,SEEK_END 这些值决定是从文件头、当前点和文件尾计算偏移量 offset。
你可以定义一个文件指针 FILE *fp,当你打开一个文件时,文件指针指向开头,你要指到多少个字节,只要控制偏移量就好,例如, 相对当前位置往后移动一个字节:fseek(fp,1,SEEK_CUR); 中间的值就是偏移量。 如果你要往前移动一个字节,直接改为负值就可以:fseek(fp,-1,SEEK_CUR)。
执行以下实例前,确保当前目录下 test.txt 文件已创建:
注意: 只有用 r+ 模式打开文件才能插入内容,w 或 w+ 模式都会清空掉原来文件的内容再来写,a 或 a+ 模式即总会在文件最尾添加内容,哪怕用 fseek() 移动了文件指针位置。
双击表格可删除表格