C char qsort指向字符串的指针数组

时间:2017-08-31 11:31:49

标签: c arrays pointers char qsort

我有一个指向字符串的指针数组:

char *TAB[3] = { "dafafa", "alfkasf", "bafgr" };

我想在每个字符串中对字符进行排序。

我的比较功能:

int cmp(const void *a, const void *b)
{
   return *(char *)a - *(char *)b; 
}

并在其中一个上尝试qsort:

qsort(TAB[0], 6, sizeof(char), cmp);

该计划不起作用。 经过多方努力,我发现问题的原因在于将TAB[0]传递给qsort()

任何人都可以解释为什么它不起作用以及如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

如果要对每个字符串中的字符进行排序,首先必须确保可以写入字符串。目前看来,你的字符串是只读的,因此如果不将其内容复制到允许写入的内存中,就无法对字符进行排序。

接下来就是你需要一个循环。由于您要单独对每个字符串进行排序,因此需要遍历数组,并在每个项目上调用qsort。初始项为TAB[i],长度为strlen(TAB[i])。您的cmp功能可以使用。