我正在从Stephen Prata的 C Primer Plus 学习C.这是第11章中的一个问题。
编写一个最多可读取10个字符串或EOF的程序,以先到者为准 第一。它为用户提供了五种选择的菜单:打印原件 字符串列表,以ASCII整理顺序打印字符串, 按顺序打印字符串 增加长度,按照第一个单词的长度顺序打印字符串 在字符串中,然后退出。让菜单循环,直到用户进入退出状态 请求。当然,该程序应该实际执行承诺的任务
我理解问题,除了它要求“以ASCII整理顺序打印字符串”的位。这是什么意思?这是否意味着我必须改变 ASCII整理顺序中的字符顺序?
答案 0 :(得分:1)
整理意味着字符串的“逻辑”排序。对于“C”语言环境,这实际上相当于按ASCII代码排序(使用strcmp()
)。
但,排序规则依赖于区域设置。
例如,在ISO 8859-1编码和DE语言环境中,字母“ü”(0xfc)不应该在列表末尾的“z”(0x7a)/之后结束,就像使用{ {1}}排序,但排序相当于“ue”(0x75 0x65)......
由于您无法了解所有现有语言环境的所有事实,标准库提供strcmp()
,strcoll()
,strxfrm()
,wcscoll()
和{{1 wcsxfrm()
的选项,它为您执行特定于语言环境的内容。
欢迎来到国际化的世界。 ;-)幸运的是,问题明确要求“ASCII整理”,这意味着你可以逃脱LC_COLLATE
......
答案 1 :(得分:0)
我认为这意味着对您读取的字符串进行简单排序,并根据字符ASCII值对它们进行排序。
因此,如果您输入两个字符串:"aa"
和"aA"
,则排序后的顺序应为"aA"
和"aa"
。此顺序是因为'a'
的ASCII值高于'A'
的ASCII值。
答案 2 :(得分:0)
归类意味着定义的排序,任务是按ASCII顺序对输入字符串进行排序,即作为标准的“排序”命令,而不是更改每个字符串中字符的顺序 - 措辞可能更清晰,你只能根据其他任务推断出意图。
答案 3 :(得分:0)
Google是你的朋友:
ascii整理顺序
网络定义 在ASCII图表中定义字符的顺序。 (见附录B。)。
因此,您应该按字符代码/ char元素的值对字符串进行排序。