在 C 语言 中我们需要比较两个 字符串 ,除了可以使用 strcmp 函数、strcasecmp 函数,还可以使用 strncmp 函数。
strncmp 函数与 strcmp 函数的区别就是,strncmp 函数可以选择比较前 n 个 字符,而不是比较整个字符串大小。
int strncmp(const char *str1, const char *str2, int n);
参数 | 描述 |
---|---|
str1 | 要进行比较的第一个字符串。 |
str2 | 要进行比较的第二个字符串。 |
n | 要比较的长度。 |
此函数功能即比较字符串 str1 和 str2 的前 n 个字符。如果前 n 字节完全相等,返回值就为 0;在前 n 字节比较过程中,如果出现 str1[i] 与 str2[i] 不等,则返回 str1[i] - str2[i] 。
使用 strncmp 函数,需要引入 string.h 头文件。
使用 strncmp() 函数,实现字符串的比较
#include <stdio.h>
#include <string.h>
int main()
{
printf("嗨客网(www.haicoder.net)\n\n");
char str1[10] = "HaiCoder";
char str2[10] = "HaiCoder";
int retNCmp = strncmp(str1, str2, 8);
printf("retNCmp = %d\n", retNCmp);
return 0;
}
程序运行后,控制台输出如下:
我们首先定义了一个字符数组 str1,并赋值,接着,我们再次定义了一个 字符数组 str2 并赋值。接着,我们使用了 strncmp 函数比较了两个字符数组的前 8 个字节,因为两个字符数组相等,所以返回了 0。现在,我们修改字符串,使他们不相等,修改如下:
#include <stdio.h>
#include <string.h>
int main()
{
printf("嗨客网(www.haicoder.net)\n\n");
char str1[3] = "Hai";
char str2[10] = "HaiCoder";
int retCmp = strncmp(str1, str2, 3);
printf("retCmp = %d\n", retCmp);
return 0;
}
程序运行后,控制台输出如下:
这次,我们修改了字符串 str1,使其与 str2 不相等,但因为字符串 str1 和字符串 str2 的前三个字符相等,同时,我们使用了 strncmp 比较的是字符串的前三个字符,因此,返回了 0,即相等。
strncmp 函数与 strcmp 函数的区别就是,strncmp 函数可以选择比较前 n 个字符,而不是比较整个字符串大小。