我不知道如何在c ++中使用memcmp
I don't know how to use memcmp in c++
我想知道当我执行这个程序时,为什么这个结果是
int arr[4][4] = { 0,0,1,1,
1,1,1,1,
0,1,1,0,
1,1,1,1
} ;
int arr2[2][2] = {1};
cout << memcmp(arr, arr2, 4) << endl ;
cout << memcmp(arr+1, arr2, 4) << endl ;
cout << memcmp(arr+2, arr2, 4) << endl ;
cout << memcmp(arr+3, arr2, 4) << endl ;
result is
-1
0
-1
0
如何比较arr和arr2 ?
我想知道为什么结果是(-1 0 -1 0)。
请。
memcmp的语法为
int memcmp ( const void * ptr1, const void * ptr2, size_t num );
将ptr1所指向的内存块的前num字节与ptr2所指向的前num字节进行比较,如果它们都匹配,则返回0;如果不匹配,则返回不同于0的值。
条件1
memcmp的输出将是<0>如果两个内存块中不匹配的第一个字节在ptr1中的值低于ptr2
条件2
memcmp的输出将是0如果两个内存块的内容相等且
条件3
如果两个内存块中不匹配的第一个字节在ptr1中的值大于ptr2中的值,则输出将为>0
下面是简单的程序
#include <stdio.h>
#include <string.h>
int main ()
{
char buffer1[] = "NEpAL";
char buffer2[] = "NEPAL";
int n;
n=memcmp ( buffer1, buffer2, sizeof(buffer1) );
if (n>0) printf ("'%s' is greater than '%s'.n",buffer1,buffer2);
else if (n<0) printf ("'%s' is less than '%s'.n",buffer1,buffer2);
else printf ("'%s' is the same as '%s'.n",buffer1,buffer2);
return 0;
}
输出将是
"尼泊尔"大于"尼泊尔"。
为p = 112和p =80。希望能有所帮助
memcmp
的第三个参数应为4*sizeof(int)
memcmp
需要两个void*
,不知道类型的宽度,它总是比较,如果指针是unsigned char*
,所以你比较的是前4个字节(不是4 int
)点的两个指针
无论如何,如果您这样做,您将在端序上遇到一些问题。我建议使用一些比较函数来考虑类型
相关文章:
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 我正在尝试使用 c++ 创建一个货币转换程序,我不知道如何继续
- 我不知道这条线是做什么的
- 如果我不知道每个列表中有多少个数字,我如何将给定数量的数字列表作为输入?
- 我不知道导致错误的原因 (C3074)
- 我不知道为什么这段代码会让核心被转储?
- 我正在尝试制作一个自平衡机器人,但编译时存在错误。我不知道如何解决它
- 我不知道如何使用代码块win32 gui
- 没有函数模板的实例与我不知道为什么的参数列表匹配
- if-else 语句仅按特定顺序工作,我不知道为什么
- DirectX 11 引擎在第三次代码改进后没有突然运行,我不知道为什么
- 程序输入名称和高度并显示它。我不知道如何显示列表中最高人的姓名和身高
- 函数抛出seg错误,我不知道为什么
- 我不知道为什么复制构造函数的调用在 c++ 中不稳定
- 我已经做了一个程序来使用队列链C++表显示学生姓名和身高,现在我想以我不知道如何显示的顺序显示它
- 我看过Stellarium代码,我不知道它从哪里开始
- C++ 我不知道此代码中的输出过程(父类子级)
- 尝试通过多个函数移动数组,但遇到了我不知道如何修复的错误
- 我不知道如何在c ++中使用memcmp