在 C 中对包含大写和小写字母的字符串数组进行排序
有没有一种方法可以按字母顺序对字符串数组进行排序,其中字符串同时包含大写和小写字母?
因为大写字母的 ASCII 值较低,所以像 strcmp 这样的函数总是会显示它位于小写字母之前。例如,假设我们想要对“ABCD”、“ZZZZ”、“海龟”、“JAVA”、“水”进行排序。
当使用strcmp这样的函数对这些字符串进行排序时,就变成:
ABCD 爪哇 ZZZZ 龟 水
应该是:
ABCD 爪哇 龟 水 ZZZZ
Is there a way to sort an array of strings in alphabetical order where the strings contain both capital and lowercase letters?
Because capital letters have a lower ASCII value so functions like strcmp would always show that it is before a lower case letter. For example, lets say we wanted to sort "ABCD", "ZZZZ", "turtle", "JAVA", "water".
When using functions like strcmp to sort these strings, it becomes:
ABCD
JAVA
ZZZZ
turtle
water
when it should be:
ABCD
JAVA
turtle
water
ZZZZ
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试
strcoll(3)
。Try
strcoll(3)
.严格使用 C89 的简单自己的解决方案应该有所帮助:
a simple own solution in strictly C89 should help:
使用 qsort 和 strcasecmp 或 strcoll 作为比较函数。
strcasecmp 可能更快,但 strcoll 更灵活,并且使用程序区域设置,以便非 ASCII 字符串可以工作。
Use qsort with either strcasecmp or strcoll as the compare function.
strcasecmp is likely to be faster, but strcoll is more flexible and uses the programs locale so that non-ASCII strings work.