Skip to content

文件操作

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;
}