我试图进行二进制搜索,搜索有序的数字文件。虽然它虽然在" main"在我将它转换为函数之前,它在我的fseek()之后设法有一些奇怪的行为。
有什么建议吗?
int BinarySearch(FILE *cp, char *CPR, int *position) {
int i, lines, current_line;
double CPR_number, CPR_check;
char CPR_check_string[CPR_LEN];
sscanf(CPR, "%lf", &CPR_number);
fseek(cp, 0L, SEEK_END);
lines = ftell(cp)/12;
current_line = ftell(cp)/2 - ((ftell(cp)/2) % 12);
for (i = 0; i < log10(lines)/log10(2); i++) {
fseek(cp, current_line, SEEK_SET);
/* Read CPR as string */
fscanf(cp, "%[0-9]", CPR_check_string);
/* Convert to number */
sscanf(CPR_check_string, "%lf", &CPR_check);
if (CPR_number == CPR_check) {
printf("This happens\n");
*position = ftell(cp);
return TRUE;
} else if (CPR_number < CPR_check) {
current_line = ftell(cp)/2 - ((ftell(cp)/2) % 12);
} else if (CPR_number > CPR_check) {
current_line = ftell(cp) + ftell(cp)/2 - ((ftell(cp) + ftell(cp)/2) % 12);
}
}
return FALSE;
}
似乎没有运行其余的代码。
提前致谢。
答案 0 :(得分:0)
我找到了答案,这是我关闭的FILE指针,它必须是一个指向指针的指针,所以FILE **。