C字符串的比较运算符

5

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

感谢您提前回答。这是我第一次因为找不到相关帖子而不得不提出问题。

2个回答

15

有几个函数,每个函数都有不同的用途(暂时省略宽字符变体)。

strcmp - 逐个字符比较两个字符串(按照 C 中的字符串相等或不相等的概念进行比较,这不需要与人类思考方式相一致 - 参见 strcoll)。还有一个比较前 n 个字符的变体 strncmp

strcasecmp - 忽略大小写比较两个字符串。还有一个比较前 n 个字符的变体 strncasecmp

strcoll - 按照当前设置的语言环境对两个字符串进行比较(这就是为什么在这种情况下称其为排序,而不是比较)。如果你希望对于德语受众,“ss”和“ß”被视为相等,则应使用此函数。


你可能会写出:

if (string1 > string2) ...

在一种语言中,你必须编写代码

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

在C语言中,你可以将两个操作数移入函数调用中,保留比较运算符,并将其与0做比较。


3

在C语言中使用strcmp()函数。

例如,如果你想比较两个字符串s1和s2,那么:

当它们相等时,strcmp(s1,s2)将返回0;当s1大于s2时,它将返回正整数;当s1小于s2时,它将返回负整数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接