C语言高手告诉我这个程序开头哪里错了 dev一直报错 还有 这个错误的地方是什么意思啊

2025-02-28 00:34:33
推荐回答(4个)
回答1:

没看错的话,两层括号内是这个表达式:fp1=fopen(filename1,"r")==NULL
根据优先级,==优先于=,故首先计算fopen(filename2,"r")==NULL的值,而==号左边是file*类型,右边是bool常量,因此编译器尝试进行数据类型隐式转换,将bool转成file*,而这是非法的,因此报错。
所谓bool型数据,即该数据只有两个值,true和false,true对应非0值,false对应0。

只要将判断式写成 if( (fp2=fopen(filename2,"r") )==NULL )即可。

回答2:

老老实实把if的判断变成两句写试试。

回答3:

bool是布尔值,值只有真true,和假false。你这种写法我没有试过,fp1=fopen(filename3,"w")==NULL 你想想这句到底怎么算? 外面还包了俩括号。

不如写的规范一点把。
先fp1=fopen(filename3,"w");
然后再判断
if(fp1==NULL)。。。。。

试试看。

回答4:

((fp1=fopen(filename1,"r"))==NULL)
应该是运算符优先级问题你改成上面这样试试