我在寻找比较C字符串的相关信息时遇到了一些困难。我知道与C++不同,C语言不支持运算符重载,所以我想知道是否有任何方法可以检查一个字符串是否大于/小于另一个字符串(例如str1 > str2)?
感谢您提前回答。这是我第一次因为找不到相关帖子而不得不提出问题。
我在寻找比较C字符串的相关信息时遇到了一些困难。我知道与C++不同,C语言不支持运算符重载,所以我想知道是否有任何方法可以检查一个字符串是否大于/小于另一个字符串(例如str1 > str2)?
感谢您提前回答。这是我第一次因为找不到相关帖子而不得不提出问题。
有几个函数,每个函数都有不同的用途(暂时省略宽字符变体)。
strcmp
- 逐个字符比较两个字符串(按照 C 中的字符串相等或不相等的概念进行比较,这不需要与人类思考方式相一致 - 参见 strcoll
)。还有一个比较前 n 个字符的变体 strncmp
。
strcasecmp
- 忽略大小写比较两个字符串。还有一个比较前 n 个字符的变体 strncasecmp
。
strcoll
- 按照当前设置的语言环境对两个字符串进行比较(这就是为什么在这种情况下称其为排序,而不是比较)。如果你希望对于德语受众,“ss”和“ß”被视为相等,则应使用此函数。
你可能会写出:
if (string1 > string2) ...
在一种语言中,你必须编写代码
if (strmp(string1, string2) > 0) ...
在C语言中,你可以将两个操作数移入函数调用中,保留比较运算符,并将其与0
做比较。
在C语言中使用strcmp()函数。
例如,如果你想比较两个字符串s1和s2,那么:
当它们相等时,strcmp(s1,s2)将返回0;当s1大于s2时,它将返回正整数;当s1小于s2时,它将返回负整数。