我有两个全局变量COUNT=0;
和SIGN=0;
然后我#define SIZE 100
我的代码中一直存在段错误,但我不太确定在哪里,如果你们可以帮我确定它,我会很感激。
它应该打印出从txt doc读入数据时所进行的分配总数。我不确定我是否理解了作业的实际内容,但这是我的理由。
void insert(int x[], int n){
int key,y,z;
COUNT++;
for(z=1; z<n-1; z++){
key=x[z];
SIGN++;
for(y=(z-1); y<0||key>=x[y]; y--){
x[y+1]=x[y];
SIGN++;
}
x[y+1]=KEY;
}
int main(){
FILE *fp;
fp=fopen("data.txt","r");
int #temp;
int i=0;
int *sort=NULL;
sort=(int *)malloc(SIZE*sizeof(sort));
while(fp!=NULL){
fscanf(fp, "%d", temp);
sort[i]=(int)temp;
i++;
}
insert(sort, SIZE);
printf("number of Assignments=%d", SIGN);
return 0;
}
答案 0 :(得分:0)
在下面的代码中,您不必担心内存溢出。
while(fp!=NULL){
fscanf(fp, "%d", temp);
sort[i]=(int)temp;
i++;
}
您分配的内存为SIZE int 。如果文件大小很大(超过分配的内存大小),那么您的代码将访问超出分配的内存的内存。所以这可能会导致问题