问题标签 [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.
android - unsigned char 打印正确的值,如 memcmp
我有这个变量,
当我使用这个标识符时,它带有一个强制转换为
喜欢
我收到一个函数:
我想比较它们,所以我用这个memcmp(identifier1, zid, 12);
答案是 0,所以它们都是相等的......
但是当我打印值时:
我在两者中都得到了不同的值......就像1711428512 1652772888
,但是memcmp
给出了写答案......我怎样才能打印这些值以获得它们的正确值?
c - c strncasecmp 可以处理 NULL(字符 0)
我有可能包含字符 0 的字符串。它们存储在如下结构中:
如果我想比较其中的两个,我可以这样使用 memcmp:
但是,如果我想在不考虑大小写的情况下比较其中两个,我的第一反应是使用 strncasecmp/_strnicmp——但是,该函数在空字符上停止。
是否已经有一个通用的 C 函数可以做到这一点。我不介意自己写,但在我这样做之前,我想确保没有我不知道的标准函数。
c - 为什么初始数组元素的地址比较相等?
我一直在做一个项目,我花了最后一个小时试图在我的代码中找到错误。仔细检查后,我注意到一些相当奇怪的问题,这一直是问题所在。
我的数组的初始元素的地址奇怪地比较等于memcmp()
。我已经分离了我的代码并尝试了一个测试代码,我得到了类似的结果。有人可以解释这种奇怪的行为吗?
memcmp - strncmp 和 memcmp 的使用
做
做同样的事情
buf
并且buf2
是 char* 数组或类似的。
我打算将此附加到另一个问题,但后来决定单独发布它可能会更好。大概答案是微不足道的“是”,或者如果不是,那么有什么区别?
(我从在线文档中找到了这些功能,但不确定,strncmp
因为文档有点不清楚。)
c - 我可以使用 memcmp 检查结构中的非零成员吗?
我正在使用一个包含许多成员的大型结构,我想要一种简单的方法来快速查看是否有任何成员非零。我知道memcmp()
不应该用它来比较两个结构的相等性(如此处所述:如何比较结构在 C 中的相等性?),但我希望通过将结构与已设置为 0 的内存块进行比较,这可能有效。
例如,假设我有一些结构:
我从这个结构创建一个变量:
在我的程序执行过程中,成员MyStruct
通常为 0,但有时可能会临时设置为某个非零值。我想快速检查其中的任何整数MyStruct
是否非零。我可以memcmp()
像下面这样使用吗?
c - Memcmp 用于具有不同数据的两个指针
这个问题有点难以解释,因为代码片段是一个更大项目的一部分。我会尽力解释这个问题。
我有两个文件
在一个函数中,我运行以下代码,
offset.txt中打印的值如下
client_random 和 ssl 的定义如下 -
我不明白为什么 memcmp 的值不为零。我怀疑存储在指针中的数据的编码方式不同,但在这种情况下如何比较这些值。我不知道任何一个指针中的数据是十六进制类型还是原始/ASCII数据。
c++ - 快速比较无符号数数组
考虑这段代码:
CmpHashArray 是否有未定义的行为?因为使用 -O2 需要 2 个 asm 指令而不是 memcmp。
UPD:
感谢您的回答。正如我现在所看到的,如果 CmpHashArray 可以归结为 1 比较sizeof(array) <= 64bit
这段代码是否可以更快地运行 memcmp?(在 64 和 32 位系统上,跨平台)
c++ - C ++:调用运算符和调用它的实现之间有区别吗
我有一个类,其中我在特定成员上重载了==
运算符。memcmp()
由于在代码中完成了错误的副本(memcpy
调用的大小比它应该的大),我在调用==
操作员时遇到了段错误。
我知道 UB 是神秘的,显然是未定义的,但我仍然注意到一些让我感兴趣的东西。
在调试时,我==
用它的实现交换了调用(即a==b
交换了memcmp(a.member_x, b.member_x, SIZE)
)并且没有段错误!
那么,使用运算符本身和用实现替换它之间有区别吗?或者这只是 UB?
澄清一下:是的,此代码包括 UB。这很糟糕,它的结果是不确定的。我想知道的是:调用运算符或调用它的主体时会发生不同的事情吗?UB 只是让我觉得可能存在差异(显然是固定的)
c - memcmp 到底应该返回什么?
我想知道函数memcmp
必须返回什么。
我一直在互联网上搜索,通常,memcmp
定义如下所示:
memcmp() 函数返回一个大于、等于或小于零的整数,相应地,因为 s1 指向的对象大于、等于或小于 s2 指向的对象。
从来没有明确说明返回的是什么:是两个字节值之间的差异,还是 -1、0 或 1?我很困惑:
- 在一个小程序中测试该函数
memcmp
时,它返回 -1、0 或 1,即使评估的两个字节之间的差值高于 1 或低于 -1。 - 在查看
memcmp
Internet 上命名的函数时,它们几乎都以 int 形式返回 2 个字节之间的差异,而不是返回 -1、0 或 1。
由于我无法对函数进行足够精确的定义,所以memcmp
我在这里问这个问题:函数memcmp
应该返回什么?某处是否有“官方”源代码?(我看过很多源代码,memcmp
但没有一个给我答案:然后我假设它们不是库 string.h 中编写的函数,至少不是在我的计算机上......)
alignment - 在哪里可以找到 glibc 源代码项目的 memcmp.c 中出现的宏 __insn_dword_align 的定义?
glibc 中函数 memcmp 的实现使用宏 DBLALIGN(例如 DBLALIG(a3, a0, srcli)) 来比较两个 unsinged int 整数。DBLALIGN 的定义如下。但是,在 glibc 源代码中没有找到 __insn_dword_align 的定义。我在哪里可以找到它。谢谢!