gpt4 book ai didi

c - C 语言中二进制搜索函数的调试问题

转载 作者:行者123 更新时间:2023-11-30 14:52:18 26 4
gpt4 key购买 nike

我正在尝试进行二分搜索来搜索有序的数字文件。尽管在我将其转换为函数之前它在“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;
}

它似乎没有运行其余的代码。

提前致谢。

最佳答案

我找到了答案,这是我的 FILE 指针关闭了,它必须是指向 FILE ** 指针的指针。

关于c - C 语言中二进制搜索函数的调试问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47673197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com