我有指針數組以字符串: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