C ++:fread()导致断言错误?

时间:2011-03-16 12:57:12

标签: c++

fread()导致错误,并说:

File: f:\ dd\vctools\ crt_bld\ self_x86\ crt\ src\fread.c
Line: 102
Expression: (stream != NULL)
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)

我该怎么办?我已在我的计划中加入<stdio.h>。我目前正在使用Visual C ++ MFC开发我的项目。

4 个答案:

答案 0 :(得分:6)

Expression: (stream != NULL)解释了这一切。

您正在将NULL信息流传递给fread而您不应该这样做。

答案 1 :(得分:1)

您是否确认您有适当的FILE对象要发送给fread?在使用之前尝试检查它是否为null。还要查看关于断言的文档,它不是关于你有哪些文件#included。这是运行时错误。

答案 2 :(得分:1)

函数fread()FILE*作为参数:

size_t __cdecl fread(
    void *buffer,
    size_t elementSize,
    size_t count,
    FILE *stream
)

您发送的FILE*为NULL。你应该调试你的程序,找出原因。

您可以通过打开计算机中的文件f:\ dd\vctools\ crt_bld\ self_x86\ crt\ src\fread.c并查看其在第102行上的操作,以与我相同的方式在您的on上找到此信息。

答案 3 :(得分:1)

您是否尝试过邮件的(Press Retry to debug the application)部分。

如果你进入调试器,你很可能会在assert()结束,并且可以检查调用堆栈以找到对fread的调用来自哪里。然后找出为什么FILE *在那里为空!或许打电话给fopen失败?