C

strncmp

strncmp

在头文件中定义
int strncmp(const char * lhs,const char * rhs,size_t count);

比较两个可能以null结尾的数组的最多数字符。 比较按字典顺序完成。

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

当访问发生在数组lhs或rhs的末尾时,行为是不确定的。 当lhs或rhs是空指针时,行为是不确定的。

参数

lhs,rhs-指向可能以null结尾的数组进行比较的指针
count-最大数量的字符进行比较

返回值

如果lhs以字典顺序出现在rhs之前,则为负值。

如果lhs和rhs比较相等,或者计数为零,则为零。

如果lhs以字典顺序出现在rhs之后,则为正值。

注意

与strcoll和strxfrm不同,此函数不是区域设置敏感的。

#include <string.h> #include <stdio.h> void demo(const char* lhs, const char* rhs, int sz) { int rc = strncmp(lhs, rhs, sz if(rc == 0) printf("First %d chars of [%s] equal [%s]\n", sz, lhs, rhs else if(rc < 0) printf("First %d chars of [%s] precede [%s]\n", sz, lhs, rhs else if(rc > 0) printf("First %d chars of [%s] follow [%s]\n", sz, lhs, rhs } int main(void) { const char* string = "Hello World!"; demo(string, "Hello!", 5 demo(string, "Hello", 10 demo(string, "Hello there", 10 demo("Hello, everybody!" + 12, "Hello, somebody!" + 11, 5 }

输出:

First 5 chars of [Hello World!] equal [Hello!] First 10 chars of [Hello World!] follow [Hello] First 10 chars of [Hello World!] precede [Hello there] First 5 chars of [body!] equal [body!]

参考

  • C11标准(ISO / IEC 9899:2011):

扩展内容

STRCMP比较两个字符串(功能)
wcsncmp(C95)比较来自两个宽字符串(函数)的一定数量的字符
memcmp比较两个缓冲区(功能)
与strcoll根据当前语言环境(函数)比较两个字符串

| strncmp的C ++文档 |