C语言中strcoll和strcmp的区别

当然在MSDN上能查到可是里面讲到两个概念orderofcharactersincharacter和thelexicographicorderofthecharacter... 当然在MSDN上能查到 可是里面讲到两个概念order of characters in character和the lexicographic order of the characters。
可以给我提供这两方面的详细知识吗?
谢谢!
十分感谢1楼和2楼的回答。您们说的都能从CSDN上看到。
现在问题是我说的两个概念以及它们的相关知识才是我最想要了解的!
展开
 我来答
tattackor
推荐于2016-06-06 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:898万
展开全部
1、默认情况下(LC_COLLATE为"POSIX"或"C")和strcmp一样根据ASCII比较字符串大小,这个时候是没有区别的。对于设置了LC_COLLATE语言环境的情况下,则根据LC_COLLATE设置的语言排序方式进行比较。例如:汉字,根据拼音进行比较。

2、strcmp是比较两个字符串的大小,两个字符串相同时返回0,第一个字符串大于第二个字符串时返回一个正值,否则返回负值。比较两个字符串的算法是:逐个比较两个串中对应的字符,字符大小按照ASCII码值确定,从左向右比较,如果遇到不同字符,所遇第一对不同字符的大小关系就确定了两个字符串的大小关系,如果未遇到不同字符而某个字符串首先结束,那么这个字符串是较小的,否则两个字符串相等。
qcj1012
推荐于2016-05-05 · TA获得超过510个赞
知道小有建树答主
回答量:200
采纳率:100%
帮助的人:263万
展开全部
strcoll功能和strcmp类似,用法也一样. 特别注意:strcoll()会依环境变量LC_COLLATE所指定的文字排列次序来比较s1和s2 字符串。 strcmp是根据ASCII来比较2个串的. 说明若LC_COLLATE为"POSIX"或"C",则strcoll()与strcmp()作用完全相同。
追问
谢谢您,不过那两个两个概念以及它们的相关知识是我最想要了解的。
追答
简单地说,一个 locale 就是一组处理跟语言相关问题的规则,这些规则就包括如何对字符串进行比较和排序。按照 C94 及 C99 标准的规定,程序在启动时设置 locale 为 "C"。在 "C" locale 下,字符串的比较就是按照内码一个字节一个字节地进行,这时 strcoll 与 strcmp 函数没有区别。在其他 locale 下,字符串的比较方式则不同了,例如在简体中文 locale 下,strcmp 仍然按内码比较,而 strcoll 对于汉字则是按拼音进行的(这也跟操作系统有关,Windows 还支持按笔划排序,可以在“区域和语言设置”里面修改)。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
buctears
2011-03-22 · TA获得超过189个赞
知道答主
回答量:84
采纳率:0%
帮助的人:24.3万
展开全部
原型:extern intstrcoll(const char *s1,const char * s2); 用法:#include<string.h>
功能:比较字符串s1和s2。
说明:
功能和strcmp类似,用法也一样.
特别注意:strcoll()会依环境变量LC_COLLATE所指定的文字排列次序来比较s1和s2 字符串。
strcmp是根据ASCII来比较2个串的.
说明若LC_COLLATE为"POSIX"或"C",则strcoll()与strcmp()作用完全相同。
追问
谢谢您,不过那两个两个概念以及它们的相关知识是我最想要了解的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式