int search(char *find){
info account;
int check, i = 0;
FILE *file = fopen("accounts.bin", "rb");
while(1){
fread(&account, sizeof(account), 1, file);
if(feof(file)){
check = 1;
break;
}
if(stricmp(account.id, find) == 0){
check = 0;
break;
}
fclose(file);
}
return check;
}
我的目标是,如果ID在accounts.bin文件中,则返回0;如果ID不存在,则返回1。当条目在文件中时,我可以得到0的返回值,但是当它没有时,它不会停止循环。
有什么想法吗?
答案 0 :(得分:1)
如果我没有弄错(如果没有示例accounts.bin
,真的无法检查):
这是因为在第17行你关闭循环中的文件;然后在下一次迭代中将关闭的文件传递给fread。您应该在循环外的return check;
上方关闭文件。
答案 1 :(得分:1)
我只是犯了把fclose放在循环中的错误。
将结束语句移到循环外部。
int search(char *find){
info account;
int check, i = 0;
FILE *file = fopen("accounts.bin", "rb");
while(1){
fread(&account, sizeof(account), 1, file);
if(feof(file)){
check = 1;
break;
}
if(stricmp(account.id, find) == 0){
check = 0;
break;
}
}
fclose(file);
return check;
}