执行此代码时,我收到错误异常程序终止。
该程序的目标是从文件list.txt
读取数字数组,并对该加载的数组执行递归二进制和递归线性搜索。
这是我的代码:
#include <stdio.h>
#include <conio.h>
void menu();
int a[30000],n;
void main()
{
FILE *fp;
int i, ch;
fp = fopen("list.txt", "r");
if(fp == NULL)
{
printf("\nCant read\n");
exit(0);
}
for(i = 0; i < n; i++)
fscanf(fp, "%d", &a[i]);
fclose(fp);
for(i = 0; i < n; i++)
printf(" %d ", a[i]);
menu();
scanf("%d", &ch);
if(ch == 1)
{
printf("ch1\n");
}
else if(ch == 2)
{
printf("ch2\n");
}
else
{
exit(1);
}
}//end main
void menu()
{
printf("\nEnter the number of elements in array\n");
scanf("%d", &n);
printf("\n1.Linear Search\n2.Binary Search\n3.Exit\nEnter your choice\n");
}
我有我的选择1和2的逻辑。我需要知道我的上述代码有什么问题。请帮帮我
答案 0 :(得分:1)
Turbo C!这带回了一些回忆,但我不再拥有我的副本了。无论如何,在menu()
初始化之前,您正在使用 n 。 (正如评论者指出的那样。)您也可以考虑使用malloc()
而不是固定大小来分配数组。
Borland Turbo C配备了Turbo Debugger,事实上我认为Borland可以免费赠送一段时间,所以运行它可以让你知道异常终止发生的地方以及你可以用来检查的堆栈跟踪导致它的变量。另一个好的做法是进行assert()
调用,以确保您对变量中的内容的假设是正确的。