【发布时间】:2023-05-23 20:43:01
【问题描述】:
我正在尝试对简化版本的二维字符串数组进行排序, (我不想将“nameArray”的数据类型更改为“char *nameArray[4]”)
#include <sys/types.h>
#include <stdio.h>
int cstring_cmp(const void *a, const void *b)
{
const char **ia = (const char **)a;
const char **ib = (const char **)b;
return strcasecmp(*ia, *ib);
}
int Test()
{
char nameArray[4][10]={"test","alpha","Hyper","city"};
// int nElem = sizeof(nameArray)/sizeof(char *);
int index = 0;
//printf("nElem =%d\n", nElem);
for(index=0; index < 4; index++)
{
printf("-> %s\n", nameArray[index]);
}
qsort( &nameArray[0], 4, sizeof(nameArray[0]), cstring_cmp);
printf("After sort\n");
for(index=0; index < 4; index++)
{
printf("-> %s\n", nameArray[index]);
}
return 0 ;
}
( 更新:更改,以便我直接使用 value(4) 而不是计算 nElem。我的问题是让 qsort 正常工作。 )
【问题讨论】:
-
qsort segfault in C 的可能重复项
-
int nElem = sizeof(nameArray)/sizeof(char *);..hmmmmm...