插入排序分段故障

时间:2014-11-05 18:14:04

标签: c segmentation-fault insertion-sort

我有两个全局变量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;
}

1 个答案:

答案 0 :(得分:0)

在下面的代码中,您不必担心内存溢出。

while(fp!=NULL){
        fscanf(fp, "%d", temp);
        sort[i]=(int)temp;
        i++;
    }

您分配的内存为SIZE int 。如果文件大小很大(超过分配的内存大小),那么您的代码将访问超出分配的内存的内存。所以这可能会导致问题