字母用C字符串进行排序的顺序

问题描述:

可能重复:
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'在'2'之前,所以任何有'Entry1'的字符串都会出现在有'Entry2'的字符串之前。这就是strcmp的定义方式。如果你想要一个不同的排序顺序,你总是可以写一个不同的排序函数。

+0

这不是需要帮助的排序功能,而是比较功能。 –

+0

感谢您的回答,我知道这是strcmp的正常行为。我的问题是达到预期行为的最简单方法是什么。 – Chris