C++中strncmp()与strcmp的区别

C++中strncmp()与strcmp的区别

这两者的基本区别是:

  1. STRCMP将两个字符串进行比较,直到出现null字符,而STRNCMP将两个字符串最多比较num个字符。但是,如果 num 等于任一字符串的长度 strncmp 的行为类似于 strcmp .
  2. 问题 strcmp 函数的作用是:如果传入参数的两个字符串都没有以空字符结束,那么字符比较将继续,直到系统崩溃。但随着 strncmp 函数可以限制与num形参的比较。

当将str1和str2作为参数传递给strcmp()函数时,它将两个字符串逐个字符进行比较,直到null字符(‘ \0 ‘)。在我们的例子中,直到字符’ s ‘,两个字符串都保持相同,但在那之后,str1的字符’ h ‘的ASCII值为104,str2的字符为空字符的ASCII值为0。由于str1字符的ASCII值大于str2字符的ASCII值,因此 strcmp() 函数返回大于零的值。因此,在strcmp()函数中,字符串str1大于字符串str2。当在strncmp()函数中传递这些参数时,要比较字符串的第3个参数num up,然后将两个字符串逐字符进行比较,直到num(如果num <=最小字符串的长度)或最小字符串的null字符。在我们的例子中,两个字符串具有相同的字符 num , so strncmp () 函数返回值为0。因此,在strncmp()函数中,字符串str1等于字符串str2。

// C, C++ program demonstrate difference between
// strncmp() and strcmp()
#include <stdio.h>
#include <string.h>
 
int main()
{
    // Take any two strings
    char str1[] = "akash";
    char str2[] = "akas";
 
    // Compare strings using strncmp()
    int result1 = strncmp(str1, str2, 4);
 
    // Compare strings using strcmp()
    int result2 = strcmp(str1, str2);
 
    // num is the 3rd parameter of strncmp() function
    if (result1 == 0)        
        printf("str1 is equal to str2 upto num characters\n");   
    else if (result1 > 0)
        printf("str1 is greater than str2\n");
    else
        printf("str2 is greater than str1\n");
 
    printf("Value returned by strncmp() is: %d\n", result1);
 
    if (result2 == 0)
        printf("str1 is equal to str2\n");   
    else if (result2 > 0)
        printf("str1 is greater than str2\n");
    else
        printf("str2 is greater than str1\n");
 
    printf("Value returned by strcmp() is: %d", result2);
 
    return 0;
}

输出:

str1 is equal to str2 upto num characters
Value returned by strncmp() is: 0
str1 is greater than str2
Value returned by strcmp() is: 104

让我们用表格的形式来看看它们的区别:

序号 strncmp strcmp
1. 它是一个C库函数。 它是C和c++中的库函数
2. 它的语法是-: Strncmp (const char *str1, const char *str2, size_t n) 它的语法是-: Int STRCMP (const char * str1, const char * str2);
3. 它接受两个参数string1和string2 这个函数执行字符的二进制比较。
4. 返回值为整型。 它执行操作,直到到达NULL。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程