可能重複:
Natural sort in C - 「array of strings, containing numbers and letters」字母用C字符串進行排序的順序
當用C與快速排序和STRCMP字符串進行排序我有字母數字輸入,通常字符串與數字結尾的問題,正在奇怪地這樣排序:
- 條目1
- Entry12
- ENTRY2
的期望的行爲是這樣的:
- 條目1
- Entry1_new
- ENTRY2
- Entry12
什麼是最簡單的方法來做到這一點?
感謝
可能重複:
Natural sort in C - 「array of strings, containing numbers and letters」字母用C字符串進行排序的順序
當用C與快速排序和STRCMP字符串進行排序我有字母數字輸入,通常字符串與數字結尾的問題,正在奇怪地這樣排序:
的期望的行爲是這樣的:
什麼是最簡單的方法來做到這一點?
感謝
沒有什麼古怪的排序; '1'在'2'之前,所以任何有'Entry1'的字符串都會出現在有'Entry2'的字符串之前。這就是strcmp的定義方式。如果你想要一個不同的排序順序,你總是可以寫一個不同的排序函數。
這不是需要幫助的排序功能,而是比較功能。 –
感謝您的回答,我知道這是strcmp的正常行爲。我的問題是達到預期行爲的最簡單方法是什麼。 – Chris
在所有數字部分中使用前導零:Entry01,Entry01_new,Entry02,Entry12等。否則,您必須轉儲'strcmp'並滾動您自己的字符串比較函數,以將數字字符串識別爲整數值。 –