下面是C语言中strncmp()函数的详细讲解:
1.函数介绍
strncmp()函数用于比较两个字符串的前n个字符是否相同。在比较时,该函数会将待比较的字符串从左到右逐个字符进行比较,如果发现有字符不相等,那么就返回它们的ASCII码之差,如果比较完n个字符后都没有发现不同,那么返回0,表示两个字符串相等。该函数的原型如下:
int strncmp(const char *str1, const char *str2, size_t n);
其中,str1和str2是两个字符串指针,用于存放待比较的两个字符串。n是一个整型数,用于指定比较的字符数。
2.函数使用
下面我们通过两个示例来说明函数的使用方法。
示例一
比较两个字符串的前5个字符是否相同,如果相同则输出”Equal”,否则输出”Not equal”。
#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = "Hello world!";
char str2[] = "Hello Kitty";
int result = strncmp(str1, str2, 5);
if (result == 0)
{
printf("Equal\n");
}
else
{
printf("Not equal\n");
}
return 0;
}
在上面的示例中,我们定义了两个字符串str1和str2,分别存储”Hello world!”和”Hello Kitty”两个字符串。然后调用strncmp()函数,比较两个字符串的前5个字符是否相同。由于前5个字符都是”Hello”,因此比较结果为0,程序输出”Equal”。
示例二
比较两个字符串是否以指定字符串开头,如果是则输出”Start with”,否则输出”Not start with”。
#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = "Hello world!";
char str2[] = "Hello Kitty";
int result1 = strncmp(str1, "Hello", 5);
int result2 = strncmp(str2, "Hello", 5);
if (result1 == 0)
{
printf("str1 start with \"Hello\"\n");
}
else
{
printf("str1 not start with \"Hello\"\n");
}
if (result2 == 0)
{
printf("str2 start with \"Hello\"\n");
}
else
{
printf("str2 not start with \"Hello\"\n");
}
return 0;
}
在上面的示例中,我们分别比较了str1和str2是否以”Hello”开头。由于str1的前5个字符为”Hello”,因此result1的值为0,输出”str1 start with \”Hello\””;而str2的前5个字符为”Hello”,因此result2的值为0,输出”str2 start with \”Hello\””。
3.总结
通过上面两个示例,我们可以看出strncmp()函数非常灵活,可以用于比较两个字符串的任意部分,而不仅仅是整个字符串。因此,在实际编写程序时,可以灵活运用该函数,提高程序的效果和可读性。