警告:fopen()调用

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

gcc针对以下代码行发出以下警告,任何想法为什么会这样?

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

并且警告是:

 warning: assignment makes pointer from integer without a cast. 

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

– 提前致谢 –

尝试

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

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

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

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

只需复制这段代码就行了….你只是忘了把()arround“fd = fopen(filename,”rw“)”