strncmp
来自 cppreference.com
在头文件 <string.h> 中定义 |
||
int strncmp( const char* lhs, const char* rhs, size_t count ); |
||
比较最多 count 个可能为空终止的数组的字符。比较是按字典顺序进行的。空字符后面的字符不会被比较。
结果的符号是第一个不同的字符对的值的差的符号(都解释为 unsigned char),这些字符对在被比较的数组中不同。
当访问超出任何数组 lhs 或 rhs 的末尾时,行为未定义。当 lhs 或 rhs 为空指针时,行为未定义。
内容 |
[编辑] 参数
lhs, rhs | - | 指向要比较的可能为空终止的数组的指针 |
count | - | 要比较的最大字符数 |
[编辑] 返回值
如果 lhs 在字典顺序中出现在 rhs 之前,则为负值。
如果 lhs 和 rhs 比较相等,或者如果 count 为零,则为零。
如果 lhs 在字典顺序中出现在 rhs 之后,则为正值。
[编辑] 说明
与 strcoll 和 strxfrm 不同,此函数不依赖于区域设置。
[编辑] 示例
运行此代码
#include <stdio.h> #include <string.h> void demo(const char* lhs, const char* rhs, int sz) { const int rc = strncmp(lhs, rhs, sz); 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); else printf("First %d chars of [%s] equal [%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!]
[编辑] 参考资料
- C23 标准 (ISO/IEC 9899:2024)
- 7.24.4.4 strncmp 函数 (p: TBD)
- C17 标准 (ISO/IEC 9899:2018)
- 7.24.4.4 strncmp 函数 (p: TBD)
- C11 标准 (ISO/IEC 9899:2011)
- 7.24.4.4 strncmp 函数 (p: 366)
- C99 标准 (ISO/IEC 9899:1999)
- 7.21.4.4 strncmp 函数 (p: 329)
- C89/C90 标准 (ISO/IEC 9899:1990)
- 4.11.4.4 strncmp 函数
[编辑] 另请参阅
比较两个字符串 (函数) | |
(C95) |
比较两个宽字符串中一定数量的字符 (函数) |
比较两个缓冲区 (函数) | |
根据当前区域设置比较两个字符串 (函数) | |
C++ 文档 用于 strncmp
|