📜  C C++中的strncmp()和strcmp之间的区别(1)

📅  最后修改于: 2023-12-03 14:39:37.301000             🧑  作者: Mango

C C++中的strncmp()和strcmp之间的区别

在C和C++中,strcmp()和strncmp()是处理字符串比较常用的函数之一。它们有相似的作用,但也有一些重要的区别。以下是它们之间的区别:

strcmp()

strcmp()函数是用于比较两个字符串是否相同的函数。它的原型如下:

int strcmp(const char *str1, const char *str2);

其返回值为0表示str1和str2相等,小于0的值表示str1小于str2,大于0的值表示str1大于str2。

当比较两个字符串时,strcmp()函数逐字符比较它们的ASCII码值。比较不同字符的ASCII码值,如果相同则继续比较下一个字符,否则返回它们的差值。

strncmp()

strncmp()函数也是用于比较两个字符串是否相同的函数。它的原型如下:

int strncmp(const char *str1, const char *str2, size_t n);

其返回值为0表示str1和str2相等,小于0的值表示str1小于str2,大于0的值表示str1大于str2。

与strcmp()不同,strncmp()函数会比较n个字符,而不是整个字符串。如果两个字符串的前n个字符相等,则为它们相等。如果前n个字符中有一个不相同,则返回它们的差值。

区别总结

相对于strcmp(),strncmp()函数的比较符和限制更为明显。通常在比较字符串时,推荐使用strncmp()函数,因为它可以避免因为一些特殊字符造成的错误比较结果。

以下是一个例子,用于比较strcmp()和strncmp()的区别:

#include <stdio.h>
#include <string.h>

int main()
{
    char str1[] = "Hello World!";
    char str2[] = "Hello Moon!";
    int result1, result2;

    result1 = strcmp(str1, str2);
    result2 = strncmp(str1, str2, 5);

    printf("strcmp() return value: %d\n", result1);
    printf("strncmp() return value: %d\n", result2);

    return 0;
}

输出为:

strcmp() return value: -7 strncmp() return value: 0

这个例子对“Hello World!”和“Hello Moon!”进行了比较。使用strcmp()函数,结果是-7,它返回结果是小于0,即指str1小于str2。而使用strncmp()函数,结果为0,表示前5个字符相等。