Javatpoint标志
Javatpoint标志

C . memcmp(

memcmp()的描述

memcmp()函数允许用户在上述两个字符的字节之间进行比较。根据比较后的结果,它可以返回正整数值或负整数值。该函数也可以返回0。

该函数表示为int memcmp(const void *strng1, const void *strng2, size_t n)。在这个函数中,计算机将检查对象strng1的初始元素的大小是否小于、大于或等于对象strng2的初始n个元素的大小。该函数定义在string.h头文件中。因此,有必要在程序中导入头文件,以便在代码中使用该函数。

声明memcmp()函数

声明函数的语法如下:

函数内部的参数

strng1:在函数内部声明的指针将指向第一个对象的位置,该对象将与第二个对象进行比较。

Strng2:这个指针指向第二个对象的内存块。

n:它决定了需要比较的数据的字节数。

计算后返回值

在比较两个字节的大小后,该函数可以返回三个可能的值范围。

返回值为正整数:这意味着内存块1的大小大于内存块2的大小。

返回值为负整数:这意味着内存块1的大小小于内存块2的大小。

它返回0:这意味着内存块1的大小等于内存块2的大小。

在C程序中实现memcmp()函数

下面是描述memcmp()使用的代码。在下面的代码中,我们将比较这两个数组。

输出:

C . memcmp(

解释:

memcmp()返回的值将为负数。在上面的例子中,我们在第一个块中存储了“memoryblock1”,在第二个块中,我们保存了“sizeofthememoryblock2”。第一组不同的字符是“m”和“s”。s的值大于m的值;因此,它将返回一个负整数。

C语言编程中关于memcmp()函数的重要事实

  • 有必要包括h头文件在您的代码中使用memcmp()函数。
  • memcmp()函数中的形参包括指向对象的指针和整数“n”。的n指定从开始算起,直到进行比较为止的字符。
  • 如果两个对象的初始字符相等,则函数将移动到对象的第二个字符。该步骤将重复执行,直到它在块中找到任何不相同的字符或与第n个元素进行比较。
  • 如果比较时内存块中的所有元素都相同,则memcmp()函数为0。

让我们编写代码来看看上述场景的实现

输出:

C . memcmp(

解释:

在上面的例子中,两个数组是相等的。因此,memcmp()将返回0,它将存储在变量中。
当两个数组中的第一个字符不同时,且第一个数组的字符值大于第二个数组的值时,该函数将返回一个正整数。

让我们实现一个代码,其中第一个对象的值大于第二个对象。

输出:

C . memcmp(

解释:

数组中的第二个元素不同。因此,memcmp()将计算哪个元素更大。在本例中,第一个数组中的元素9大于第二个数组中的元素5。因此,它将为结果返回一个正值。

5.假设第一个对象的初始不相同字符小于第二个对象的对应字符。在这种情况下,结果的值将是一个负整数。

让我们看一个memcmp()返回值为负的例子。

输出:

C . memcmp(

解释:

数组中的第一个元素是不同的。因此,memcmp()将计算哪个元素更少。在这种情况下,第一个数组中的元素是4,小于第二个数组中的元素是5。因此,它将为结果返回一个负值。

程序员需要选择要执行比较的字符或字节数。它会影响结果,所以程序员必须确保给n赋一个有效值。

6.程序员应该确保输入的字节数总是小于两个对象的大小。否则,可能会返回错误的结果。

输出:

C . memcmp(

解释:

在上面的程序中,两个数组完全相同。这是相等的,n的大小大于两个数组的大小。因此,程序返回了错误的结果。

注意:不应该使用memcmp()函数在结构之间进行比较,因为它可能会返回错误的结果,并且是不安全的,因为填充字节中总是有垃圾值的机会。

实现自己的memcmp()函数

memcmp()函数已经在C库中定义,可以在程序中包含string.h头文件后轻松使用。标准库中定义的函数使用起来是最高效和有效的。因此,不需要定义或创建memcmp()函数。

如果您知道某些条件或场景,则可以降低在对象之间执行比较的复杂性。在这种情况下,可以定义memcmp()函数来提高程序的简单性。

下面是用户定义的memcmp()函数的函数定义。在这个函数中没有考虑到许多场景。因此,如果希望添加更多条件,可以相应地更改代码或使用库函数来执行比较。


下一个话题





Youtube 观看视频请加入我们的Youtube频道:现在加入

反馈


帮助他人,请分享

脸谱网 推特 pinterest

学习最新教程


准备


热门的技术


B.Tech / MCA






Baidu
map