警告:fopen()调用

时间:2011-08-08 10:22:18

标签: c warnings fopen std

嗨,我正在用linux下的stdlib进行编程。

gcc会针对以下代码行发出以下警告,不知道为什么会这样?

FILE *fd;
if ( fd = fopen( filename, "rw" )== NULL )
{

并且警告是:

warning: assignment makes pointer from integer without a cast.

如何实现这一点,根据stdlib文档,fopen的返回类型为FILE *。那么为什么还有警告?有什么想法吗?

- 提前致谢 -

3 个答案:

答案 0 :(得分:6)

尝试

if ((fd = fopen( filename, "rw")) == NULL)
    ^                           ^ 

否则fd将取值0或1,FILE *返回的fopen本身将丢失。因此,如果没有这些括号,比较结果将存储在fd而不是FILE *本身。

答案 1 :(得分:1)

您实际上将fd指定为fopen(filename, "rw") == NULL,因为条件表达式是整数(0或1),您要从整数指定指针。关注@ cnicutar的修复答案

答案 2 :(得分:0)

FILE *fd;
if ( (fd = fopen( filename, "rw" ))== NULL )
{

只需复制此代码即可使用.... 你只是忘了把()放在“fd = fopen(filename,”rwp>