C语言 strncmp()函数

  • Post category:C

下面是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()函数非常灵活,可以用于比较两个字符串的任意部分,而不仅仅是整个字符串。因此,在实际编写程序时,可以灵活运用该函数,提高程序的效果和可读性。