c - fgetc 总是返回值 1

标签 c printf eof fgetc getc

有如下函数:

void readAndPrint(FILE * f) {
    int c;

    while(c = fgetc(f) != EOF) {
        printf("%d", c);
    }
}

在 main() 主体中,我使用以下代码来使用上述功能:

FILE * pFile;

pFile=fopen ("myfile.txt","r");

readAndPrint(pFile)

;

无论我在 myfile.txt 中放入什么,程序都会打印出一些。 例如,对于 abc,打印出 111。

我知道函数中的 c 应该声明为 int 以正确地将它与 EOF 进行比较。另外,我希望为文本文件中的每个字符打印出来自 ASCII 集的 int 代码(97 表示 a,...)。我不明白为什么它会打印出“ones”……你知道原因吗?提前谢谢你。

最佳答案

(c = fgetc(f) != EOF) - 这里首先 fgetc(f) != EOF 这种情况正在发生,结果 10 分配给 c。条件检查始终返回 TRUE(1) 或 FALSE (0)。

执行 while((c = fgetc(f)) != EOF)

关于c - fgetc 总是返回值 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14666062/

相关文章:

c - 在C中设计队列。向队列添加元素时出现段错误

当字符串参数不是以 null 结尾时, `snprintf()` 是否可以越界读取?

c - 为什么我不能使用 fseek() 访问 EOF?

c - 请解释下面 printfs 的区别

C - 在阅读之前找到文件结尾

c - 使用 fgets 到达 EOF

c - NDK-将负双数转换为 uint32_t 得到零

c - 为什么当我从 C 调用它时,书中的这个 16 位 DOS 示例会崩溃(用 visual studio 编译?)

c - C 中指针的传递和赋值

c++ - std::string.resize() 和 std::string.length()