【发布时间】:2017-11-04 17:16:18
【问题描述】:
我正在尝试创建一个程序,该程序接受一个包含 5 个元素的向量并根据它们的距离对它们进行排序(“距离”的含义不是这里的重点)。
但是每次我执行它都会给我“segmentation fault”错误:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
char ID[8];
char Content[4];
int distance;
} DATA;
void sort(DATA *z, int l){
DATA p; //pivot
DATA t;
int aux=(l-1); //pivot's position
int i,j;
p.distance=z[l-1].distance;
if(l==1){return;}
for(i=0; i<l; i++){
if((z[i].distance)<(p.distance)){
continue;
}
if((z[i].distance)>(p.distance)){
t=z[i];
for(j=i; j<aux; j++){
z[j]=z[j+1];
}
z[aux]=t;
aux--;
}
}
sort(z,aux-1);
sort(&z[aux+1],l-aux);
}
int main(){
DATA *z;
int l=5;
int i;
z=(DATA*)malloc(5*sizeof(DATA));
z[0].distance=5;
z[1].distance=1;
z[2].distance=4;
z[3].distance=3;
z[4].distance=2;
sort(z,l);
for(i=0; i<5; i++){
printf("%d\n",z[i].distance);
}
free(z);
}
我看不出问题出在哪里。如果可以的话,请帮忙。
【问题讨论】:
-
也许是时候学习了how to debug small programs。
-
你用过调试器吗?这是完成这项工作的正确工具。对于初学者,它会立即准确地告诉您哪一行代码导致了段错误。
-
你推荐哪一个?顺便说一句,感谢您的快速响应!
-
gdb 如果你使用的是 linux。
标签: c algorithm sorting segmentation-fault quicksort