C 警告:fopen()调用

C 警告:fopen()调用,c,warnings,fopen,std,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*。那为什么还有警告呢?知道吗 --提前感谢--试试看 if ((fd = fopen( f

嗨,我在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
返回的
文件*
本身将丢失。因此,如果没有这些括号,比较结果将存储在
fd
中,而不是
文件*
本身。

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

FILE *fd;
if ( (fd = fopen( filename, "rw" ))== NULL )
{
只要复制这段代码就行了。。。。
您只是忘了在“fd=fopen(filename,“rw”)”的周围加上()而已。

值得注意的是,==的优先级高于=。这是先执行的方式。@taskino或感谢您的澄清。