strncmp() 函数功能说明
strncmp()
是 C 语言标准库 string.h
中的一个字符串比较函数,用于比较两个字符串的前 n 个字符。
函数原型
int strncmp(const char *str1, const char *str2, size_t n);
功能描述
strncmp()
比较字符串 str1
和 str2
的前 n
个字符,比较时会一直进行直到出现不同的字符或遇到空字符(‘\0’)或比较完前 n
个字符为止。
返回值
- 小于 0:如果
str1
的前n
个字符小于str2
的前n
个字符 - 等于 0:如果
str1
的前n
个字符等于str2
的前n
个字符 - 大于 0:如果
str1
的前n
个字符大于str2
的前n
个字符
比较是基于字符的 ASCII 值进行的。
与 strcmp() 的区别
strncmp()
与 strcmp()
的主要区别在于:
strcmp()
比较整个字符串直到遇到空字符strncmp()
只比较前 n 个字符,即使没有遇到空字符
示例代码
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "Hello World";
char str2[] = "Hello C";
// 比较前5个字符
int result = strncmp(str1, str2, 5);
if (result == 0) {
printf("前5个字符相同\n");
} else {
printf("前5个字符不同\n");
}
// 比较前7个字符
result = strncmp(str1, str2, 7);
if (result < 0) {
printf("str1 小于 str2\n");
} else if (result > 0) {
printf("str1 大于 str2\n");
} else {
printf("str1 等于 str2\n");
}
return 0;
}
注意事项
strncmp()
是安全的,因为它限制了比较的字符数量,可以防止缓冲区溢出- 如果任一字符串长度小于 n,比较会在遇到第一个空字符时停止
- 比较是按字典顺序进行的,基于字符的 ASCII 值