当前位置:首页C语言 > 正文

C语言文件流(字节流) IO 操作“流”以及文件的顺序读写(fgetc / fgets / fscanf / fread )

作者:野牛程序员:2023-12-31 11:44:35C语言阅读 3014

C语言中,文件流(字节流)IO操作是通过标准库函数来实现的。以下是关于文件流IO操作的一些函数以及文件的顺序读写:

  1. 打开文件: 使用fopen函数打开文件,并返回一个文件指针。例如:

  2. FILE *file = fopen("example.txt", "r");

    这将以只读方式打开名为"example.txt"的文件。

  3. 顺序读取字符: 使用fgetc函数逐个字符读取文件内容。例如:

  4. int ch;
    while ((ch = fgetc(file)) != EOF) {
        // 处理读取到的字符
    }
  5. 顺序读取字符串: 使用fgets函数逐行读取文件内容。例如:

  6. char buffer[100];
    while (fgets(buffer, sizeof(buffer), file) != NULL) {
        // 处理读取到的字符串
    }
  7. 格式化读取: 使用fscanf函数按指定格式读取文件内容。例如:

  8. int value;
    while (fscanf(file, "%d", &value) == 1) {
        // 处理读取到的整数值
    }
  9. 二进制文件读取: 使用fread函数进行二进制文件读取。例如:

    int buffer[10];
    fread(buffer, sizeof(int), 10, file);
    // 处理读取到的二进制数据

  10. 关闭文件: 使用fclose函数关闭打开的文件。例如:

  11. fclose(file);

以上函数中,file是通过fopen打开文件返回的指针。在使用这些函数时,需要注意检查文件是否成功打开和操作是否成功执行,以避免潜在的错误。

以下是一个简单的C语言程序,演示了文件流(字节流)IO操作,包括顺序读取字符、顺序读取字符串、格式化读取以及二进制文件读取的例子。

#include <stdio.h>

int main() {
    FILE *file;

    // 1. 打开文件(以只读方式打开)
    file = fopen("example.txt", "r");

    // 检查文件是否成功打开
    if (file == NULL) {
        printf("无法打开文件\\n");
        return 1; // 返回错误代码
    }

    // 2. 顺序读取字符
    int ch;
    printf("顺序读取字符:\\n");
    while ((ch = fgetc(file)) != EOF) {
        putchar(ch); // 输出字符
    }
    printf("\\n");

    // 3. 顺序读取字符串
    char buffer[100];
    fseek(file, 0, SEEK_SET); // 将文件指针重新定位到文件开头
    printf("顺序读取字符串:\\n");
    while (fgets(buffer, sizeof(buffer), file) != NULL) {
        printf("%s", buffer); // 输出字符串
    }

    // 4. 格式化读取
    int value;
    fseek(file, 0, SEEK_SET); // 将文件指针重新定位到文件开头
    printf("格式化读取整数:\\n");
    while (fscanf(file, "%d", &value) == 1) {
        printf("%d ", value); // 输出整数
    }
    printf("\\n");

    // 5. 二进制文件读取
    fseek(file, 0, SEEK_SET); // 将文件指针重新定位到文件开头
    printf("二进制文件读取:\\n");
    int binaryData[10];
    fread(binaryData, sizeof(int), 10, file);
    for (int i = 0; i < 10; ++i) {
        printf("%d ", binaryData[i]); // 输出二进制数据
    }
    printf("\\n");

    // 6. 关闭文件
    fclose(file);

    return 0; // 返回成功代码
}


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击