C 中字符串的字母数字排序顺序

发布于 2024-11-26 21:37:04 字数 498 浏览 3 评论 0原文

可能的重复:
C 中的自然排序 - “字符串数组,包含数字和字母”

当使用 qsort 和 strcmp 对 C 中的字符串进行排序时,我遇到一个问题,即字母数字条目(通常以数字结尾的字符串)的排序方式很奇怪:

  • Entry1
  • Entry12
  • Entry2

所需的行为是this:

  • Entry1
  • Entry1_new
  • Entry2
  • Entry12

最简单的方法是什么?

谢谢

Possible Duplicate:
Natural sort in C - “array of strings, containing numbers and letters”

When sorting strings in C with qsort and strcmp I have the problem that alphanumeric entries, typically strings ending with numbers, are being sorted oddly like this:

  • Entry1
  • Entry12
  • Entry2

The desired behavior is this:

  • Entry1
  • Entry1_new
  • Entry2
  • Entry12

What is the easiest way to do this?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

素食主义者 2024-12-03 21:37:04

这种排序并没有什么奇怪的。 “1”位于“2”之前,因此任何具有“Entry1”的字符串都将位于任何具有“Entry2”的字符串之前。这就是 strcmp 的定义方式。如果您需要不同的排序顺序,您始终可以编写不同的排序函数。

There's nothing odd about the sort; '1' comes before '2', so any string that has 'Entry1' will come before any string that has 'Entry2'. That's just the way strcmp is defined. If you desire a different sort order, you can always write a different sort function.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文