使用 c 语言中的 feof 函数-ag捕鱼王app官网

当前位置:ag捕鱼王app官网 > > 编程语言 > c语言 >

使用 c 语言中的 feof 函数

作者:迹忆客 最近更新:2023/05/05 浏览次数:

本文将介绍几种在 c 语言中使用 feof 函数的方法。


使用 feof 函数检查 c 语言中文件流上的文件结束指示符

feof 函数是 c 标准输入/输出库的一部分,定义在 头文件。feof 函数检查给定文件流上的文件结束指示器,如果 eof 被设置,则返回一个非零整数。它把 file 指针作为唯一的参数。

在下面的例子中,我们演示了当使用 getline 函数逐行读取文件时,该函数会被调用,直到 feof 返回零,意味着文件流还没有到达 eof。注意,我们在条件语句中验证 getline 函数的返回值,只有在成功的情况下才调用 printf 输出读行。

#include #include #include const char* filename = "input.txt";
int main(void) {
    file* in_file = fopen(filename, "r");
    if (!in_file) {
        perror("fopen");
        exit(exit_failure);
    }
    struct stat sb;
    if (stat(filename, &sb) == -1) {
        perror("stat");
        exit(exit_failure);
    }
    char *contents = null;
    size_t len = 0;
    while (!feof(in_file)) {
        if (getline(&contents, &len, in_file) != -1) {
            printf("%s", contents);
        }
    }
    fclose(in_file);
    exit(exit_success);
}

在 c 语言中使用 feofferror 函数来测试文件流的有效位置

另外,在我们读取文件内容之前,可以利用 feof 来测试文件流的位置。在这种情况下,我们使用 fread 调用读取文件,它使用 stat 函数调用检索文件的大小。注意,存储读取字节的缓冲区是使用 malloc 函数在堆上分配的。另外,我们在条件语句中加入了 ferror 函数,与 eof 指示符一起测试文件流上的 error 状态。

#include #include #include const char* filename = "input.txt";
int main(void) {
    file* in_file = fopen(filename, "r");
    if (!in_file) {
        perror("fopen");
        exit(exit_failure);
    }
    struct stat sb;
    if (stat(filename, &sb) == -1) {
        perror("stat");
        exit(exit_failure);
    }
    char* file_contents = malloc(sb.st_size);
    if (!feof(in_file) && !ferror(in_file))
        fread(file_contents, 1, sb.st_size, in_file);
    printf("read data: %s\n", file_contents);
    free(file_contents);
    fclose(in_file);
    exit(exit_success);
}

ferror 也是 i/o 库的一部分,可以在 file 指针对象上调用。如果文件流上设置了错误位,它将返回一个非零指示器。请注意,这三个例子都是打印 filename 变量指定的文件内容。在前面的示例代码中,我们使用 printf 函数输出存储的内容,但更容易出错的方法是 fwrite 调用,它可以将给定的字节数打印到第四个参数指定的 file 流中。

#include #include #include const char* filename = "input.txt";
int main(void) {
    file* in_file = fopen(filename, "r");
    if (!in_file) {
        perror("fopen");
        exit(exit_failure);
    }
    struct stat sb;
    if (stat(filename, &sb) == -1) {
        perror("stat");
        exit(exit_failure);
    }
    char* file_contents = malloc(sb.st_size);
    if (!feof(in_file) && !ferror(in_file))
        fread(file_contents, 1, sb.st_size, in_file);
    fwrite(file_contents, 1, sb.st_size, stdout);
    free(file_contents);
    fclose(in_file);
    exit(exit_success);
}

上一篇:

下一篇:在 c 语言刷新 stdout 输出流

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在c中将整数转换为字符

发布时间:2024/01/03 浏览次数:131 分类:c语言

本教程介绍了在c中将整数转换为字符的不同方法。在c编程语言中,将整数转换为字符在各种情况下都很重要。在c中,字符是以ascii值表示的,因此转换过程相对简单。

发布时间:2023/05/07 浏览次数:364 分类:c语言

本文介绍了如何在 c 语言中使用 typedef enum。使用 enum 在 c 语言中定义命名整数常量 enum 关键字定义了一种叫做枚举的特殊类型。

c 语言中的静态变量

发布时间:2023/05/07 浏览次数:167 分类:c语言

本文介绍了如何在 c 语言中使用静态变量。在 c 语言中使用 static 变量在函数调用之间保存变量值

c 语言中生成随机数

发布时间:2023/05/07 浏览次数:158 分类:c语言

本文演示了如何在 c 语言中生成随机数。使用 rand 和 srand 函数在 c 语言中生成随机数

发布时间:2023/05/07 浏览次数:129 分类:c语言

本文演示了如何在 c 语言中使用前缀增量与后缀增量运算符。c 语言中 i 和 i 记号的主要区别

发布时间:2023/05/07 浏览次数:275 分类:c语言

本文演示了如何在 c 语言中获取当前工作目录。使用 getcwd 函数获取当前工作目录的方法

发布时间:2023/05/07 浏览次数:177 分类:c语言

本文介绍了如何在 c 语言中使用位掩码。使用 struct 关键字在 c 语言中定义位掩码数据

发布时间:2023/05/07 浏览次数:212 分类:c语言

本文演示了如何在 c 语言中使用标准库排序函数。使用 qsort 函数对 c 语言中的整数数组进行排序

c 语言中的 extern 关键字

发布时间:2023/05/07 浏览次数:131 分类:c语言

本文介绍了如何在 c 语言中使用 extern 关键字。c 语言中使用 extern 关键字来声明一个在其他文件中定义的变量

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便
网站地图