我有指针数组以字符串:c char字符的qsort为字符串
char *TAB[3] = { "dafafa", "alfkasf", "bafgr" };
我想在每个这些字符串的字符进行排序。
我比较功能:
int cmp(const void *a, const void *b)
{
return *(char *)a - *(char *)b;
}
,并同时对其中的一个尝试快速排序:
qsort(TAB[0], 6, sizeof(char), cmp);
程序不起作用。 经过很多努力,我发现问题的原因是在提供TAB[0]
到qsort()
。
任何人都可以解释为什么它不工作,以及如何解决?
C中的字符串是*只读*。尝试修改它们会导致[*未定义行为*](https://en.wikipedia.org/wiki/Undefined_behavior)。 –
“我想对每个字符串中的字符进行排序。” - >在给定源字符串写入的情况下,您希望将该排序字符串放在哪里,_string literal_,是_undefined behavior_? – chux