Tag: memcmp

使用文件i / o读取字节长度

我试图用以下代码找到两个不同文件的字节长度,但得到字节长度为1,这显然是错误的。 从长远来看,我正在尝试比较每个文件的内存位置,并打印出它们的不同之处,如您所见。 所以我没有到达任何地方,并做了printf语句,看看问题可能在哪里。 因此,看起来好像我的长度没有正确计算。 可能对我的问题有帮助的旁注 – 我发现这是为memcmp,但这是否意味着我不能使用!= ?: 如果返回值<0则表示str1小于str2 如果返回值> 0则表示str2小于str1 如果返回值if = 0则表示str1等于str2 请帮忙! void compare_two_binary_files(int f1, int f2) { ssize_t byte_read_f1, byte_read_f2, length, numRead, bob, length2; char buf1[BUF_SIZE], buf2[BUF_SIZE], a[100], b[100], counter[100]; int count = 0, b_pos1, b_pos2; while ((byte_read_f1 = read(f1, buf1, sizeof buf1) > 0) && (byte_read_f2 = read(f2, buf2, sizeof […]

memcmp但需要将块与固定值进行比较

我需要将一块内存与C中的固定值进行比较。我可以用memcmp做这个吗? 就像是: memcmp(starting_address, fixed_value ,num_byte) 我需要fixed_value作为固定值而不是块的起始地址。 将固定值写入整个临时存储器块不是一种选择,因为我的空间有限。 使用循环来逐个写入和检查内存不是一种选择,因为它非常慢。 如果不可能,任何人都可以告诉我一个与memcmp一样快(或更快)的解决方案吗? 谢谢, 编辑:假设我有5GB的内存,保持0。 我正在努力确保他们都是0。 检查块的第一个字节是否安全,然后执行此操作: memcmp(starting_address,starting_address + ONE_BYTE,FIVE_GB); ? 编辑:这就是为什么我需要使用memcmp而不是用户定义的循环: 此代码运行了546个时钟周期: memset(0x80000000 , 0x1 , 0x10000000); memset(0x90000000 , 0x1 , 0x10000000); memcmp(0x80000000 , 0x90000000 , 0x10000000); vs这个花了7669个时钟滴答: unsigned int i; int flag = 0; int *p = 0x80000000; int *q = 0x90000000; while(p < 0x90000000) { if(*p++ […]

C数组比较

用于比较数组(在C中)以使用来自string.h memcmp的string.h吗? 我想在unit testing中比较整数和双精度数组 我不确定是否使用类似的东西: double a[] = {1.0, 2.0, 3.0}; double b[] = {1.0, 2.0, 3.0}; size_t n = 3; if (! memcmp(a, b, n * sizeof(double))) /* arrays equal */ 或写一个定制的is_array_equal(a, b, n)类型函数?

为什么memcmp比for循环检查快得多?

为什么memcmp(a, b, size)比以下快得多: for(i = 0; i < nelements; i++) { if a[i] != b[i] return 0; } return 1; memcmp是CPU指令还是什么? 它必须非常深,因为我在循环中使用memcmp获得了大量的加速。