strcmp
strcmp
在头文件 | | |
---|---|---|
int strcmp(const char * lhs,const char * rhs); | | |
按照字典顺序比较两个以空字符结尾的字节字符串。
结果的符号是第一对字符(两者的解释为unsigned char
)在所比较的字符串中不同的值之间的差异的符号。
如果lhs
或rhs
不是指向以空字符结尾的字节字符串的指针,行为是未定义的。
参数
lhs,rhs | - | 指向以空字符结尾的字节字符串进行比较的指针 |
---|
返回值
如果lhs以字典顺序出现在rhs之前,则为负值。
如果lhs和rhs比较相等,则为零。
如果lhs以字典顺序出现在rhs之后,则为正值。
注意
与strcoll和strxfrm不同,此函数不是区域设置敏感的。
例
#include <string.h>
#include <stdio.h>
void demo(const char* lhs, const char* rhs)
{
int rc = strcmp(lhs, rhs
if(rc == 0)
printf("[%s] equals [%s]\n", lhs, rhs
else if(rc < 0)
printf("[%s] precedes [%s]\n", lhs, rhs
else if(rc > 0)
printf("[%s] follows [%s]\n", lhs, rhs
}
int main(void)
{
const char* string = "Hello World!";
demo(string, "Hello!"
demo(string, "Hello"
demo(string, "Hello there"
demo("Hello, everybody!" + 12, "Hello, somebody!" + 11
}
输出:
[Hello World!] precedes [Hello!]
[Hello World!] follows [Hello]
[Hello World!] precedes [Hello there]
[body!] equals [body!]
参考
- C11标准(ISO / IEC 9899:2011):
扩展内容
STRNCMP | 比较两个字符串的一定数量的字符(函数) |
---|---|
wcscmp(C95) | 比较两个宽字符串(函数) |
memcmp | 比较两个缓冲区(功能) |
与strcoll | 根据当前语言环境(函数)比较两个字符串 |
| 用于strcmp的C ++文档 |