200分求人帮忙改C语言程序错误,自己写的,找不出问题了。急着交作业啊~

由于这里字数限制,所以只能存到网盘了。
http://pickup.mofile.com/7519648211470109
提取码:7519648211470109

里面注释什么的基本都有,现在卡在读取文件以后不会返回主函数循环。
哪位能帮我改改,多谢~

第1个回答  2009-06-10
看了下...恩可以把函数定义为有返回值的

int readfile()
{
int i=0 ;
fp=fopen("card1.dat","rb");
//如果已经存在
if(fp!=NULL)
{
printf("文件已经存在!数据读入……\n");
while(fscanf(fp,"%I64d%s%f%s%ld",&card[i].cardid,&card[i].id,&card[i].money,&card[i].name,&card[i].pwd)!=EOF)
{
i++;
counts=i ;
}
fclose(fp);
return;
}
fp=fopen("card1.dat","wb");
printf("输入卡号,姓名,金额,挂失信息(0/1)(卡号-1表示输入结束!):\n");
while(scanf("%I64d%s%s%ld",&card[i].cardid,&card[i].id,&card[i].name,&card[i].pwd),card[i].cardid!=-1)
card[i].money=0;
i++;
counts=i ;
fclose(fp);
write_file();
return 1;
}

还有 要多注意下编程风格 恩的那个switch看得我眼都花了..嘿嘿
第2个回答  2009-06-12
既然readfile()是不需要返回值的你就不要加return
为什么你要在readfile()后面再write_file()一下呢,readfile()中不是已经有write_file()了吗?
楼主你最好用printf测下问题到底是出在哪里,确实是已经执行完readfile()了吗?还是卡在readfile()中的某一句,调一个函数你就printf些东西很好找错误的。
第3个回答  2009-06-13
发你的完整程序看看

int readfile()
{
int i=0 ;
fp=fopen("card1.dat","rb");
//如果已经存在
if(fp!=NULL)
{
printf("文件已经存在!数据读入……\n");
while(fscanf(fp,"%I64d%s%f%s%ld",&card[i].cardid,&card [i].id,&card[i].money,&card[i].name,&card[i].pwd)!=EOF) {
i++;
counts=i ;
}
fclose(fp);
return;
}
fp=fopen("card1.dat","wb");
printf("输入卡号,姓名,金额,挂失信息(0/1)(卡号-1表示输入结束!):\n");
while(scanf("%I64d%s%s%ld",&card[i].cardid,&card[i].id,&card[i].name,&card[i].pwd),card[i].cardid!=-1)——————————————————//有问题这是个循环()里的值是真还是假啊 循环语句是什么啊 没{} scanf是不是fscanf少了括号

card[i].money=0;
i++;
counts=i ;
fclose(fp);
write_file();
return 1;
}
相似回答