Skip to content

文件处理

[[C]] 在C语言中,文件操作是通过 fopen 函数来打开文件的,fopen 的第二个参数是一个模式字符串,用于指定文件的打开方式。a+ 是其中一种模式,表示以追加和读取的方式打开文件。以下是关于 a+ 和其他常用模式的详细说明,以及如何分别使用读、写、追加功能。 - a


1. a+ 模式

  • 含义:以追加和读取的方式打开文件。
  • 行为
  • 如果文件存在,文件指针会定位到文件末尾,写入的数据会追加到文件末尾。
  • 如果文件不存在,会创建一个新文件。
  • 可以读取文件内容,但写入的数据只能追加到文件末尾。
  • 适用场景:需要在文件末尾追加数据,同时还需要读取文件内容。

示例:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "a+");
    if (file == NULL) {
        printf("Failed to open file.\n");
        return 1;
    }

    // 追加数据
    fprintf(file, "This is appended text.\n");

    // 读取文件内容
    fseek(file, 0, SEEK_SET); // 将文件指针移动到文件开头
    char buffer[100];
    while (fgets(buffer, sizeof(buffer), file)) {
        printf("%s", buffer);
    }

    fclose(file);
    return 0;
}

2. 其他常用模式

以下是常用的文件打开模式及其行为:

模式 含义 文件存在 文件不存在
r 只读方式打开文件 打开文件 返回 NULL
w 只写方式打开文件 清空文件 创建新文件
a 追加方式打开文件 打开文件 创建新文件
r+ 读写方式打开文件 打开文件 返回 NULL
w+ 读写方式打开文件 清空文件 创建新文件
a+ 追加和读取方式打开文件 打开文件 创建新文件

3. 如何使用读、写、追加功能

以下是分别使用读、写、追加功能的示例:

(1)只读(r

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "r");
    if (file == NULL) {
        printf("Failed to open file.\n");
        return 1;
    }

    // 读取文件内容
    char buffer[100];
    while (fgets(buffer, sizeof(buffer), file)) {
        printf("%s", buffer);
    }

    fclose(file);
    return 0;
}

(2)只写(w

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "w");
    if (file == NULL) {
        printf("Failed to open file.\n");
        return 1;
    }

    // 写入数据
    fprintf(file, "This is new text.\n");

    fclose(file);
    return 0;
}

(3)追加(a

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "a");
    if (file == NULL) {
        printf("Failed to open file.\n");
        return 1;
    }

    // 追加数据
    fprintf(file, "This is appended text.\n");

    fclose(file);
    return 0;
}

(4)读写(r+

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "r+");
    if (file == NULL) {
        printf("Failed to open file.\n");
        return 1;
    }

    // 读取文件内容
    char buffer[100];
    while (fgets(buffer, sizeof(buffer), file)) {
        printf("%s", buffer);
    }

    // 写入数据
    fprintf(file, "This is new text.\n");

    fclose(file);
    return 0;
}

(5)读写(w+

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "w+");
    if (file == NULL) {
        printf("Failed to open file.\n");
        return 1;
    }

    // 写入数据
    fprintf(file, "This is new text.\n");

    // 读取文件内容
    fseek(file, 0, SEEK_SET); // 将文件指针移动到文件开头
    while (fgets(buffer, sizeof(buffer), file)) {
        printf("%s", buffer);
    }

    fclose(file);
    return 0;
}

4. 总结

  • a+ 模式用于以追加和读取的方式打开文件。
  • 其他常用模式包括 r(只读)、w(只写)、a(追加)、r+(读写)、w+(读写)。
  • 根据需求选择合适的模式,可以分别实现读、写、追加功能。

希望这些解释和示例对你有帮助!