2012-01-17 177 views
5

我在查找比较C字符串的信息时遇到了一些困难。我明白,与C++不同,C不支持操作符重载,所以我想知道是否有任何方法检查一个字符串是否大于/小于另一个(例如str1> str2)?C字符串的比较运算符

非常感谢您的回复。这是我第一次真的不得不问一个问题,因为我找不到相关的帖子。

回答

14

有几个,每个服务于不同的目的(现在省略宽字符变体)。

strcmp - 比较两个字符串,逐个字符(C是什么字符串是否相等的概念 - 不需要与人们的想法一致 - 见strcoll)。有一个变体只能比较第一个最多n个字符,strncmp

strcasecmp - 比较两个字符串,忽略大小写。有一个变体仅用于比较第一个最多n个字符,strncasecmp

strcoll - 比较两个字符串,观察当前设置的语言环境(这就是为什么称为归类,而不是在这种情况下比较)。如果您希望ssß比较德国观众的平等,那么这就是你应该使用的。


下,您可能在语言写

if (string1 > string2) ... 

,你必须写

if (strmp(string1, string2) > 0) ... 
在C.

基本上你两个操作数进入函数调用,保留了比较操作而是与0进行比较。

2

使用的strcmp()的C.

例如,如果要比较两个字符串S1和S2然后,

STRCMP(S1,S2)将返回0,如果他们是平等的,正整数,如果如果s1小于s2,则s1大于s2且为负整数。