无法在C中调试binarysearch函数

时间:2017-12-06 11:27:00

标签: c file fseek

我试图进行二进制搜索,搜索有序的数字文件。虽然它虽然在" 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;
}

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

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