问题标签 [memcmp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
146 浏览

android - unsigned char 打印正确的值,如 memcmp

我有这个变量,

当我使用这个标识符时,它带有一个强制转换为

喜欢

我收到一个函数:

我想比较它们,所以我用这个memcmp(identifier1, zid, 12);

答案是 0,所以它们都是相等的......

但是当我打印值时:

我在两者中都得到了不同的值......就像1711428512 1652772888,但是memcmp给出了写答案......我怎样才能打印这些值以获得它们的正确值?

0 投票
0 回答
244 浏览

c - c strncasecmp 可以处理 NULL(字符 0)

我有可能包含字符 0 的字符串。它们存储在如下结构中:

如果我想比较其中的两个,我可以这样使用 memcmp:

但是,如果我想在不考虑大小写的情况下比较其中两个,我的第一反应是使用 strncasecmp/_strnicmp——但是,该函数在空字符上停止。

是否已经有一个通用的 C 函数可以做到这一点。我不介意自己写,但在我这样做之前,我想确保没有我不知道的标准函数。

0 投票
5 回答
77 浏览

c - 为什么初始数组元素的地址比较相等?

我一直在做一个项目,我花了最后一个小时试图在我的代码中找到错误。仔细检查后,我注意到一些相当奇怪的问题,这一直是问题所在。

我的数组的初始元素的地址奇怪地比较等于memcmp()。我已经分离了我的代码并尝试了一个测试代码,我得到了类似的结果。有人可以解释这种奇怪的行为吗?

0 投票
3 回答
1553 浏览

memcmp - strncmp 和 memcmp 的使用

做同样的事情

buf并且buf2是 char* 数组或类似的。

我打算将此附加到另一个问题,但后来决定单独发布它可能会更好。大概答案是微不足道的“是”,或者如果不是,那么有什么区别?

(我从在线文档中找到了这些功能,但不确定,strncmp因为文档有点不清楚。)

0 投票
2 回答
1127 浏览

c - 我可以使用 memcmp 检查结构中的非零成员吗?

我正在使用一个包含许多成员的大型结构,我想要一种简单的方法来快速查看是否有任何成员非零。我知道memcmp()不应该用它来比较两个结构的相等性(如此处所述:如何比较结构在 C 中的相等性?),但我希望通过将结构与已设置为 0 的内存块进行比较,这可能有效。

例如,假设我有一些结构:

我从这个结构创建一个变量:

在我的程序执行过程中,成员MyStruct通常为 0,但有时可能会临时设置为某个非零值。我想快速检查其中的任何整数MyStruct是否非零。我可以memcmp()像下面这样使用吗?

0 投票
2 回答
668 浏览

c - Memcmp 用于具有不同数据的两个指针

这个问题有点难以解释,因为代码片段是一个更大项目的一部分。我会尽力解释这个问题。

我有两个文件

在一个函数中,我运行以下代码,

offset.txt中打印的值如下

client_random 和 ssl 的定义如下 -

我不明白为什么 memcmp 的值不为零。我怀疑存储在指针中的数据的编码方式不同,但在这种情况下如何比较这些值。我不知道任何一个指针中的数据是十六进制类型还是原始/ASCII数据。

0 投票
0 回答
98 浏览

c++ - 快速比较无符号数数组

考虑这段代码:

CmpHashArray 是否有未定义的行为?因为使用 -O2 需要 2 个 asm 指令而不是 memcmp。

UPD:

感谢您的回答。正如我现在所看到的,如果 CmpHashArray 可以归结为 1 比较sizeof(array) <= 64bit

这段代码是否可以更快地运行 memcmp?(在 64 和 32 位系统上,跨平台)

0 投票
1 回答
88 浏览

c++ - C ++:调用运算符和调用它的实现之间有区别吗

我有一个类,其中我在特定成员上重载了==运算符。memcmp()由于在代码中完成了错误的副本(memcpy调用的大小比它应该的大),我在调用==操作员时遇到了段错误。

我知道 UB 是神秘的,显然是未定义的,但我仍然注意到一些让我感兴趣的东西。

在调试时,我==用它的实现交换了调用(即a==b交换了memcmp(a.member_x, b.member_x, SIZE))并且没有段错误!

那么,使用运算符本身和用实现替换它之间有区别吗?或者这只是 UB?

澄清一下:是的,此代码包括 UB。这很糟糕,它的结果是不确定的。我想知道的是:调用运算符或调用它的主体时会发生不同的事情吗?UB 只是让我觉得可能存在差异(显然是固定的)

0 投票
4 回答
2162 浏览

c - memcmp 到底应该返回什么?

我想知道函数memcmp必须返回什么。

我一直在互联网上搜索,通常,memcmp定义如下所示:

memcmp() 函数返回一个大于、等于或小于零的整数,相应地,因为 s1 指向的对象大于、等于或小于 s2 指向的对象。

从来没有明确说明返回的是什么:是两个字节值之间的差异,还是 -1、0 或 1?我很困惑:

  • 在一个小程序中测试该函数memcmp时,它返回 -1、0 或 1,即使评估的两个字节之间的差值高于 1 或低于 -1。
  • 在查看memcmpInternet 上命名的函数时,它们几乎都以 int 形式返回 2 个字节之间的差异,而不是返回 -1、0 或 1。

由于我无法对函数进行足够精确的定义,所以memcmp我在这里问这个问题:函数memcmp应该返回什么?某处是否有“官方”源代码?(我看过很多源代码,memcmp但没有一个给我答案:然后我假设它们不是库 string.h 中编写的函数,至少不是在我的计算机上......)

0 投票
1 回答
51 浏览

alignment - 在哪里可以找到 glibc 源代码项目的 memcmp.c 中出现的宏 __insn_dword_align 的定义?

glibc 中函数 memcmp 的实现使用宏 DBLALIGN(例如 DBLALIG(a3, a0, srcli)) 来比较两个 unsinged int 整数。DBLALIGN 的定义如下。但是,在 glibc 源代码中没有找到 __insn_dword_align 的定义。我在哪里可以找到它。谢谢!