字母用C字符串进行排序的顺序
问题描述:
可能重复:
Natural sort in C - “array of strings, containing numbers and letters”字母用C字符串进行排序的顺序
当用C与快速排序和STRCMP字符串进行排序我有字母数字输入,通常字符串与数字结尾的问题,正在奇怪地这样排序:
- 条目1
- Entry12
- ENTRY2
的期望的行为是这样的:
- 条目1
- Entry1_new
- ENTRY2
- Entry12
什么是最简单的方法来做到这一点?
感谢
答
没有什么古怪的排序; '1'在'2'之前,所以任何有'Entry1'的字符串都会出现在有'Entry2'的字符串之前。这就是strcmp的定义方式。如果你想要一个不同的排序顺序,你总是可以写一个不同的排序函数。
+0
这不是需要帮助的排序功能,而是比较功能。 –
+0
感谢您的回答,我知道这是strcmp的正常行为。我的问题是达到预期行为的最简单方法是什么。 – Chris
在所有数字部分中使用前导零:Entry01,Entry01_new,Entry02,Entry12等。否则,您必须转储'strcmp'并滚动您自己的字符串比较函数,以将数字字符串识别为整数值。 –