在C中使用常规文件使用错误

时间:2019-01-22 08:49:23

标签: c io

在这个相关问题How to use feof and ferror for fgets (minishell in C)中,对于我的问题,答案并不确定。

我想做的是:我想从磁盘上的纯文本文件中读取所有字符。它不是链接,设备文件,套接字等,只是普通的文本文件。阅读完所有字符后,我想查看是否一切成功。我现在看到的是,在Debug构建中,一切都成功进行,但是在Release构建中,ferror()始终指示存在错误。调试版本最后返回0。在这两种情况下,我都可以看到文件的内容是在调试器中获取的。

my_function(File* f) {
    int c;
    while ((c = fgetc(f)) != EOF) {
        char character = (char) c;
        // store character in a dynamic growing buffer
    }
    // append '0' byte to buffer (to terminate the string).

    if (ferror(f)) {
        // return error
        return 1;
    }
    return 0; // no error.
}

拥有一个已经打开的文件作为函数参数的理由是,它使得从文件中读取相对容易,而无需理会依赖于平台的编码。这是在我的库的私有部分内,公共函数处理f == NULL的情况。 我是否需要首先调用clearerr(file),因为在发布版本中未初始化错误位?

0 个答案:

没有答案