请问这个是怎么回事?

xtaaiihc 2009-11-15 07:27:11
#include<stdio.h>
#define SIZE 3
struct dangang_type
{
int num;
int N[3][4];
}dang[SIZE];

void save()
{ FILE *fp;
int i;
if((fp=fopen("e:\\11.15.txt","wb")==NULL))
{ printf("cannot open file\n");
return;
}
for(i=0;i<SIZE;i++)
if(fwrite(&dang[i],sizeof(struct dangang_type),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}

void main()
{
int i;
for(i=0;i<SIZE;i++)
scanf("%d%s",&dang[i].num,dang[i].N);
save();
}


出现错误如下:
cannot convert ‘int' to 'FILE *'
...全文
92 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
苍蝇①号 2009-11-19
  • 打赏
  • 举报
回复
用ferror看看是什么错误才好排查
xtaaiihc 2009-11-19
  • 打赏
  • 举报
回复
两位指正非常对,但我运行还是说打不开文件不知道怎么回事?
苍蝇①号 2009-11-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 migney 的回复:]
if((fp=fopen("e:\\11.15.txt","wb")==NULL))
这一行括号搞错了,你这样写相当于
if( fp =(fopen("e:\\11.15.txt","wb")==NULL) )
即fp是个布尔值,在C里是int型,而fp的声明是FILE *,所以出现这个错误.

正确的是:
if((fp=fopen("e:\\11.15.txt","wb"))==NULL)
[/Quote]
正解
爱碎碎念 2009-11-15
  • 打赏
  • 举报
回复
if((fp=fopen("e:\\11.15.txt","wb")==NULL))
这一行括号搞错了,你这样写相当于
if( fp = (fopen("e:\\11.15.txt","wb")==NULL) )
即fp是个布尔值,在C里是int型,而fp的声明是FILE *,所以出现这个错误.

正确的是:
if((fp=fopen("e:\\11.15.txt","wb"))==NULL)

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧