【发布时间】:2016-12-03 13:45:03
【问题描述】:
我想在我的程序中使用 qsort() 函数。
我想按字符串对这个结构进行排序。
我只是指点一下。
我搜索了互联网,但没有得到它。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int cmpstr(const void* a, const void* b)
{
const char* aa = *(const char**)a;
const char* bb = *(const char**)b;
return strcmp(aa,bb);
}
typedef struct
{ int x;
char a[10];
}alex;
int main()
{
alex vd[10];
int i;
//vd=malloc(sizeof(struct alex)*2);
strcpy(vd[0].a,"dinamitte");
strcpy(vd[1].a,"alex");
printf("Before : \n");
for(i=0;i<=1;i++)
printf("%s ",vd[i].a);
//qsort(v,1,sizeof (v) ,myCompare);
int n=2;
//qsort(v, 2, sizeof (char *), cstring_cmp);
qsort(vd,n ,sizeof(alex),cmpstr);
//qsort()
printf("\nAfter : \n");
for(i=0;i<=1;i++)
printf("%s \n",vd[i]);
return 0;
}
编译后,它会在屏幕上显示“dinamitte”和“alex”,然后是一些奇怪的字符。
【问题讨论】:
-
您的
cmpstr函数错误。因为alex成员的顶部有int。 -
但我不应该返回一个值吗?
-
还有
printf("%s \n",vd[i]);错字为printf("%s \n",vd[i].a); -
你太棒了:)