我有一个指向字符串的指针数组:
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()
。
任何人都可以解释为什么它不起作用以及如何解决这个问题?
答案 0 :(得分:4)
如果要对每个字符串中的字符进行排序,首先必须确保可以写入字符串。目前看来,你的字符串是只读的,因此如果不将其内容复制到允许写入的内存中,就无法对字符进行排序。
接下来就是你需要一个循环。由于您要单独对每个字符串进行排序,因此需要遍历数组,并在每个项目上调用qsort
。初始项为TAB[i]
,长度为strlen(TAB[i])
。您的cmp
功能可以使用。