📜  CC++ 中 strncmp() 和 strcmp 的区别(1)

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

CC++ 中 strncmp() 和 strcmp 的区别

在 C 和 C++ 中,strncmp()strcmp() 是两个经常使用的函数。它们都用于比较两个字符串的内容是否相同。但是,它们的使用方式有所不同。

strcmp()

strcmp() 函数用于比较两个字符串是否相同。该函数使用以下语法:

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

该函数接受两个参数 str1str2,分别是需要比较的两个字符串。如果两个字符串相同,strcmp() 返回值为0。如果 str1 小于 str2,返回值为负数。如果 str1 大于 str2,返回值为正数。返回值的具体数值并不重要,只需要知道正数表示第一个字符串大于第二个字符串,负数则反之。

例如,我们可以使用以下代码比较两个字符串是否相同:

const char* str1 = "hello";
const char* str2 = "world";

int result = strcmp(str1, str2);

if (result == 0) {
    std::cout << "The two strings are the same" << std::endl;
} else {
    std::cout << "The two strings are different" << std::endl;
}

输出结果为:

The two strings are different
strncmp()

strncmp() 函数也用于比较两个字符串的内容是否相同。然而,strncmp()strcmp() 的不同之处在于,它只比较字符串的前 n 个字符,而不是全部字符。该函数使用以下语法:

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

该函数接受三个参数 str1str2n,分别是需要比较的两个字符串和需要比较的字符数量。如果两个字符串前 n 个字符都相同,strncmp() 返回值为0。如果 str1 小于 str2,返回值为负数。如果 str1 大于 str2,返回值为正数。

例如,我们可以使用以下代码比较两个字符串前四个字符是否相同:

const char* str1 = "hello";
const char* str2 = "help";

int result = strncmp(str1, str2, 4);

if (result == 0) {
    std::cout << "The first four characters of the two strings are the same" << std::endl;
} else {
    std::cout << "The first four characters of the two strings are different" << std::endl;
}

输出结果为:

The first four characters of the two strings are the same
总结

strcmp()strncmp() 都是用于比较字符串内容的函数,但是它们的不同之处在于 strncmp() 可以指定比较的字符数量。在实际应用中,我们需要根据具体情况选择使用哪个函数。如果我们需要比较整个字符串是否相同,则使用 strcmp();如果我们只需要比较字符串的前几个字符是否相同,则使用 strncmp()