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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这种排序并没有什么奇怪的。 “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.