我正在尝试使用以下代码查找两个不同文件的字节长度,但是得到的字节长度为1,这显然是错误的。从长远来看,我正在尝试比较每个文件的内存位置并打印出它们的不同之处,如您所见。所以我没有得到任何结果,并做了printf
陈述来看看问题可能出在哪里。因此,看起来我的长度没有正确计算。
旁注可能有助于解决我的问题 - 我为 memcmp 找到了这个,但这是否意味着我不能使用!=
?:
if 返回值 if < 0 则表示 str1 小于 str2
if 返回值 if > 0 则表示 str2 小于 str1
if 返回值 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 buf2) >0)) {
length = byte_read_f1;
length2 = byte_read_f2;
printf("F1 byte length:%o\n", length);
printf("F2 byte length:%o\n", length2);
ssize_t len = byte_read_f1 <byte_read_f2 ? byte_read_f1 : byte_read_f2;
b_pos1 = memcmp(buf1, buf2, len);
printf("Memcmp: %d\n", b_pos1);
if (memcmp(buf1, buf2, len) != 0){ // use memcmp for speed
ssize_t i;
for (i = 0; i<len; i++){
if (buf1[i] != buf2[i]) break;
}
}