跳至主要內容

13.文件操作

约 617 字大约 2 分钟

C 文件读写

FILE *fopen( const char *filename, const char *mode );

模式

r 打开一个已有的文本文件,允许读取文件

w 打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。如果文件存在,则该会被截断为零长度,重新写入。

a 打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。

r+ 打开一个文本文件,允许读写文件。

w+ 打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。

a+ 打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。

#include <stdio.h>

int main() {
    FILE *file;
    // 缓冲区大小可以根据需要调整
    char buffer[256];
    // 打开文件以进行读取
    file = fopen("example.txt", "r");
    if (file == NULL) {
        perror("Error opening file");
        return 1;
    }
    // 逐行读取文件内容
    while (fgets(buffer, sizeof(buffer), file) != NULL) {
        printf("%s", buffer);
    }
    // 关闭文件
    fclose(file);
    return 0;
}

标准库文件操作函数

fopen: 打开文件

FILE *fopen(const char *filename, const char *mode);

fclose: 关闭文件

int fclose(FILE *stream);

fread: 从文件中读取数据

size_t fread(void *ptr, size_t size, size_t count, FILE *stream);

fwrite: 向文件中写入数据

size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);

fgets: 从文件中读取一行文本

char *fgets(char *str, int n, FILE *stream);

fputs: 向文件中写入一行文本

int fputs(const char *str, FILE *stream);

fprintf: 格式化输出到文件

int fprintf(FILE *stream, const char *format, ...);

fscanf: 从文件中格式化输入

int fscanf(FILE *stream, const char *format, ...);

fseek: 移动文件指针

int fseek(FILE *stream, long offset, int whence);

ftell: 获取文件指针位置

long ftell(FILE *stream);

rewind: 重置文件指针到文件开始位置

void rewind(FILE *stream);

feof: 检查是否到达文件末尾

int feof(FILE *stream);

ferror: 检查文件流是否发生错误

int ferror(FILE *stream);

clearerr: 清除文件流的错误标志

void clearerr(FILE *stream);