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