2 sinat 29743363 sinat_29743363 于 2015.07.11 20:53 提问

c +帮忙看一下定义的这个函数哪里不对
c

void input(const char filename[])
{FILE *fp;
fp=fopen(filename,"r");
if(fp=NULL)
{printf("file not found!");
pressanykey();
return;
}
int i=0;
while(!feof(fp))
{fscanf(fp,"%s%*c%s%*c%s%*c%s%*c%d% %d %f %d%*c",books[i].booknum,books[i].name,books[i].publish,books[i].author,&books[i].date.y,&books[i].date.m,&books[i].price,&books[i].n);
i=i+1;
}
fclose(fp);
}

5个回答

caozhy
caozhy   Ds   Rxr 2015.07.11 20:57

if(fp=NULL)
->
if(fp==NULL)

pressanykey();
这个在哪里定义的

sinat_29743363
sinat_29743363 不好意思,我只是复制了程序的一部分,我感觉问题出在读文件 也就是while那个语句,要读的文件格式是:"1001 Chinese QingHuaPublication YangMeng 2009 09 19.9 200"这样的
2 年多之前 回复
leisurehuangzhong
leisurehuangzhong   2015.07.11 21:09

首先我发现格式化参数个数不匹配啊。(百分号个数和后面的参数)

sinat_29743363
sinat_29743363 要读的文件格式是:"1001 Chinese QingHuaPublication YangMeng 2009 09 19.9 200"这样的,%*c是为了读空格和回车
2 年多之前 回复
oyljerry
oyljerry   Ds   Rxr 2015.07.11 21:24

你现在读取的内容是内容没有读取到还是其它什么错误

oyljerry
oyljerry 回复sinat_29743363: 直接编译器跟一下,看具体错误位置
2 年多之前 回复
sinat_29743363
sinat_29743363 点击运行程序后弹出提示框,“改程序已停止工作”
2 年多之前 回复
u011040549
u011040549   2015.07.11 22:12

那个if判断不应该是等号吗?为何是赋值

sinat_29743363
sinat_29743363 那个已经改过来了,好像还有其他错误
2 年多之前 回复
fu2904202001
fu2904202001   2015.07.12 13:40

fscanf()函数会自动过滤掉空格和回车,不需要你自己过滤,所以不需要%*c.

Csdn user default icon
上传中...
上传图片
插入图片