C参考手册
字符串 | Strings
strcmp
在头文件<string.h>中定义 |
|
|
---|---|---|
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):
- 7.24.4.2 strcmp函数(p:365-366)
- C99标准(ISO / IEC 9899:1999):
- 7.21.4.2 strcmp函数(p:328-329)
- C89 / C90标准(ISO / IEC 9899:1990):
- 4.11.4.2 strcmp函数
扩展内容
STRNCMP |
比较两个字符串的一定数量的字符(函数) |
---|---|
wcscmp(C95) |
比较两个宽字符串(函数) |
memcmp |
比较两个缓冲区(功能) |
与strcoll |
根据当前语言环境(函数)比较两个字符串 |
| 用于strcmp的C ++文档 |