Administrator
Administrator
发布于 2024-09-05 / 13 阅读
0
0

第10章:文件操作

10.1 文件操作基础

1. 文件的打开和关闭

使用 fopen 函数打开文件,使用 fclose 函数关闭文件。

打开文件的模式:

  • "r":只读模式
  • "w":写入模式(会清空文件内容)
  • "a":追加模式(写入内容将追加到文件末尾)
  • "r+":读写模式
  • "w+":读写模式(会清空文件内容)
  • "a+":读写模式(写入内容将追加到文件末尾)

示例:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "w"); // 打开文件进行写入
    if (file == NULL) {
        printf("Error opening file!\n");
        return 1;
    }

    fprintf(file, "Hello, World!\n"); // 写入数据到文件
    fclose(file); // 关闭文件

    return 0;
}

10.2 文件读写操作

1. 写入文件

使用 fprintffputsfwrite 等函数将数据写入文件。

示例:

#include <stdio.h>

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

    fprintf(file, "Writing to a file using fprintf.\n");
    fputs("Writing to a file using fputs.\n", file);
    fclose(file);

    return 0;
}

2. 读取文件

使用 fscanffgetsfread 等函数从文件读取数据。

示例:

#include <stdio.h>

int main() {
    char buffer[100];
    FILE *file = fopen("example.txt", "r");
    if (file == NULL) {
        printf("Error opening file!\n");
        return 1;
    }

    while (fgets(buffer, sizeof(buffer), file) != NULL) {
        printf("%s", buffer); // 读取并打印每行内容
    }

    fclose(file);

    return 0;
}

10.3 文件指针操作

1. 移动文件指针

使用 fseekftellrewind 来控制文件指针的位置。

示例:

#include <stdio.h>

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

    fseek(file, 0, SEEK_END); // 移动到文件末尾
    long fileSize = ftell(file); // 获取文件大小
    rewind(file); // 将文件指针重置到文件开头

    printf("File size: %ld bytes\n", fileSize);

    fclose(file);

    return 0;
}

10.4 二进制文件操作

1. 写入和读取二进制文件

使用 fwritefread 处理二进制数据。

示例:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.bin", "wb");
    if (file == NULL) {
        printf("Error opening file!\n");
        return 1;
    }

    int numbers[] = {1, 2, 3, 4, 5};
    fwrite(numbers, sizeof(int), 5, file); // 写入二进制数据
    fclose(file);

    file = fopen("example.bin", "rb");
    if (file == NULL) {
        printf("Error opening file!\n");
        return 1;
    }

    int readNumbers[5];
    fread(readNumbers, sizeof(int), 5, file); // 读取二进制数据

    for (int i = 0; i < 5; i++) {
        printf("%d ", readNumbers[i]); // 打印读取的数据
    }
    printf("\n");

    fclose(file);

    return 0;
}

10.5 错误处理

1. 错误检查

在文件操作中,检查文件是否成功打开,处理文件操作中的错误。

示例:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "r");
    if (file == NULL) {
        perror("Error opening file"); // 打印错误信息
        return 1;
    }

    // 文件操作代码...

    if (fclose(file) != 0) {
        perror("Error closing file"); // 打印关闭文件时的错误信息
        return 1;
    }

    return 0;
}

练习

  1. 编写一个程序,创建一个文本文件并写入用户输入的多行文本,然后读取并打印文件内容。
  2. 编写一个程序,创建一个二进制文件并写入一组浮点数,随后读取这些浮点数并计算它们的平均值。
  3. 编写一个程序,使用文件操作保存一个结构体数组(如学生信息),然后读取并打印这些信息。
  4. 编写一个程序,统计一个文本文件中字符、单词和行的数量,并将结果保存到另一个文件中。

完成这些练习后,你将掌握C语言的文件操作。


评论