在C语言中,字符串的字母数字排序顺序

3
可能会有重复:
用C进行自然排序——“包含数字和字母的字符串数组”

C语言中使用qsort和strcmp对字符串进行排序时,我遇到了一个问题,像这样以数字结尾的字母数字混合输入被奇怪地排序:

  • Entry1
  • Entry12
  • Entry2

期望的行为是这样的:

  • Entry1
  • Entry1_new
  • Entry2
  • Entry12

最简单的方法是什么?

谢谢


在所有数字部分中使用前导零: Entry01,Entry01_new,Entry02,Entry12等。否则,您将不得不丢弃strcmp并编写自己的字符串比较函数,以识别数字字符串作为整数值。 - John Bode
1个回答

1

排序没什么奇怪的,'1' 在 '2' 之前,所以任何包含 'Entry1' 的字符串都会在任何包含 'Entry2' 的字符串之前。这就是 strcmp 函数定义的方式。如果您需要不同的排序顺序,您可以编写一个不同的排序函数。


需要帮助的不是排序函数,而是比较函数。 - Mark Ransom
谢谢你的回答,我知道这是strcmp的正常行为。我的问题是如何实现所需的行为最简单的方法是什么。 - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接