首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

帮忙找下错,该如何处理

2012-06-03 
帮忙找下错这是一个自定义函数,整个程序编译没问题,但是选择此项运行时总是异常,帮忙看一下void searchsco

帮忙找下错
这是一个自定义函数,整个程序编译没问题,但是选择此项运行时总是异常,帮忙看一下
void searchscoreif()
{
FILE *fp1;
struct subject stud;
char sea[20];
int flag=0;
printf("请输入要查找的学生的姓名或学号: ");
scanf("%19s",sea);
while(getchar()!='\n');
if(fp1=fopen("student2.txt","rb")==NULL)
{
printf("文件打开失败!!!\n");
exit(1);
}
//printf("%c",7);
while(!feof(fp1))
{
fread(&stud,sizeof(struct subject),1,fp1);
printf("%c",7);
if((strcmp(sea,stud.name)==0)||(strcmp(sea,stud.stunum)==0))
{
printf("%c",7);
print2(&stud);
flag=1;
break;
}
}
if(flag==0) printf("%c Sorry 查找的人不存在!!!\n",7);
//printf("%c",7);
 fclose(fp1);
}


[解决办法]
单步调试吧,看你的函数没有什么问题,就是不知道你打印的时候printf("%c",7);这样的语句是打算做什么
[解决办法]
if( (fp1=fopen("student2.txt","rb")) == NULL)
[解决办法]

C/C++ code
while(!feof(fp1)){fread(&stud,sizeof(struct subject),1,fp1);changed to :while (fread(&stud, sizeof(struct subject), 1, fp1) == 1) {}
[解决办法]
给个路径试试if( (fp1=fopen("student2.txt","rb")) == NULL)




[解决办法]
探讨
单步调试吧,看你的函数没有什么问题,就是不知道你打印的时候printf("%c",7);这样的语句是打算做什么

[解决办法]
if(fp1=fopen("student2.txt","rb")==NULL)
应该是这句话有问题,根据运算符号优先级fopen("student2.txt", "rb")==NULL的优先级高于“=”所以,如果打开成功则fp1 = 0,如果打开失败fp1=1;所以你下面的运算都是建立在这个错误的fp1之上的。
更改为:
if((fp1 = fopen("student2.txt", "rb")) == NULL) {
...
}

热点排行