2011-07-27 241 views
3

可能重複:
Natural sort in C - 「array of strings, containing numbers and letters」字母用C字符串進行排序的順序

當用C與快速排序和STRCMP字符串進行排序我有字母數字輸入,通常字符串與數字結尾的問題,正在奇怪地這樣排序:

  • 條目1
  • Entry12
  • ENTRY2

的期望的行爲是這樣的:

  • 條目1
  • Entry1_new
  • ENTRY2
  • Entry12

什麼是最簡單的方法來做到這一點?

感謝

+0

在所有數字部分中使用前導零:Entry01,Entry01_new,Entry02,Entry12等。否則,您必須轉儲'strcmp'並滾動您自己的字符串比較函數,以將數字字符串識別爲整數值。 –

回答

1

沒有什麼古怪的排序; '1'在'2'之前,所以任何有'Entry1'的字符串都會出現在有'Entry2'的字符串之前。這就是strcmp的定義方式。如果你想要一個不同的排序順序,你總是可以寫一個不同的排序函數。

+0

這不是需要幫助的排序功能,而是比較功能。 –

+0

感謝您的回答,我知道這是strcmp的正常行爲。我的問題是達到預期行爲的最簡單方法是什麼。 – Chris

相關問題