c语言中使用strcmp()比较两个二进制文件

Jin*_*Bae -4 c binary file strcmp

首先抱歉我的英语不好。

我有两个二进制文件。

我将二进制文件分别存储到缓冲区中。

然后我使用 strcmp() 比较了两个缓冲区。

strcmp() 的结果为零。

所以我认为两个二进制是相同的。

打开两个二进制文件,然后检查是否有差异。

但我发现差别不大。

问题是什么?

strcmp() 函数不是将二进制与二进制进行比较的正确方法?

Nik*_*rin 7

C 函数strcmp用于比较字符串。在 C 中,字符串是以char空字节 ( '\0')结尾的指针或数组。因此,比较只进行到第一个空字节。

例子:

文件 A:"abcd\0efg" 文件 B:"abcd\0xyz"

由于两个文件都等于空字节,因此这些位置的“字符串”是相等的,尽管后面的内容可能不同。您应该改用该函数memcmp请参阅本教程;请参阅参考资料中的示例)。

编辑:正如此答案下的评论所指出的以及在另一个答案中所提到的,手册页strcmpmemcmp是从标准库中了解这些功能的可靠资源。