非常教程

C参考手册

字符串 | Strings

strcmp

在头文件<string.h>中定义

int strcmp(const char * lhs,const char * rhs);

按照字典顺序比较两个以空字符结尾的字节字符串。

结果的符号是第一对字符(两者的解释为unsigned char)在所比较的字符串中不同的值之间的差异的符号。

如果lhsrhs不是指向以空字符结尾的字节字符串的指针,行为是未定义的。

参数

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 ++文档 |

C

C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。