为了让测试具体功能更简洁,我想对fclose
函数执行测试。但是在尝试写入和重新读取位图图像时遇到了问题。问题测试fclose返回值
assert(fclose(bmp_image) != EOF);
虽然下面的代码不会给出任何错误:
其实,我测试的时候fclose
这种方式有一个bug发生的历史
int closing_ok = fclose(bmp_image);
assert(closing_ok != EOF);
有了更多的测试,我看到这个差异仅在写入模式下发生,但不在读取模式下发生。这种差异是否正常?有人能解释我这种差异吗?
编辑: 我试图让错误与代码含义:
if(fclose(output_file) != EOF) {
printf("ERROR: %s\n", strerror(errno));
}
但也正是在这里很好,没有错误。
问题是什么是什么呢?它没有被调用吗? – StoryTeller
@StoryTeller我想是的。它可能无法正常关闭文件... 这不是一个大问题,我只是不明白这种行为。 – baptiste
你在if(fclose(output_file)!= EOF)中的测试应该是'if(fclose(output_file)== EOF)'来打印错误原因。 – Gerhardh