文件操作
FILE
结构体
C 语言标准未指定 FILE
结构体的具体实现,甚至没有说明它是不是完整类型。FILE
对象可能在语义上不可复制。
文件访问
在 C 语言中,文件操作主要通过 stdio.h
头文件中定义的函数来实现。最常用的文件操作函数包括:
打开文件
c
FILE* fopen(const char* filename, const char* mode);
常用的模式有:
文件访问模式字符串 | 含义 | 解释 | 若文件已存在的动作 | 若文件不存在的动作 |
---|---|---|---|---|
"r" | 读 | 打开文件以读取 | 从头读 | 打开失败 |
"w" | 写 | 创建文件以写入 | 销毁内容 | 创建新文件 |
"a" | 附加 | 附加到文件 | 写到结尾 | 创建新文件 |
字符串的其余部分可以包含以下任意顺序的字符,并进一步影响文件的打开方式:
"b"
:以二进制模式打开文件。"x"
:以独占模式打开文件。"p"
:以私有模式打开文件。"+"
:以更新模式打开文件(可读可写)。
关闭文件
c
int fclose(FILE* stream);
直接输入输出
字符操作
c
int fputc(int char, FILE* stream); // 写入单个字符
int fgetc(FILE* stream); // 读取单个字符
字符串操作
c
int fputs(const char* str, FILE* stream); // 写入字符串
char* fgets(char* str, int n, FILE* stream); // 读取字符串
格式化输入输出
c
int fprintf(FILE* stream, const char* format, ...); // 格式化写入
int fscanf(FILE* stream, const char* format, ...); // 格式化读取
文件定位
获取当前位置
c
long ftell(FILE* stream);
设置位置
c
int fseek(FILE* stream, long offset, int whence);
定位参数:
SEEK_SET
: 文件开头SEEK_CUR
: 当前位置SEEK_END
: 文件末尾
重置位置
c
void rewind(FILE* stream); // 将位置重置到文件开头
对文件的操作
文件重命名
c
int rename(const char* oldname, const char* newname);
删除文件
c
int remove(const char* filename);
示例代码
c
#include <stdio.h>
int main() {
FILE* fp;
char buffer[100];
// 写入文件
fp = fopen("test.txt", "w");
if (fp != NULL) {
fprintf(fp, "Hello, File!\n");
fclose(fp);
}
// 读取文件
fp = fopen("test.txt", "r");
if (fp != NULL) {
fgets(buffer, 100, fp);
printf("读取的内容:%s", buffer);
fclose(fp);
}
return 0;
}