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

compare two binary files using strcmp() in c Language

首先抱歉我的英语不好

我有两个二进制文件。

我把二进制文件分别存入缓冲区

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

strcmp() 的结果为零。

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

打开两个二进制文件,检查是否有区别。

但我发现差别不大。

有什么问题?

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

您不能使用字符串函数比较二进制数据。

您需要改用 memcmp

https://man7.org/linux/man-pages/man3/memcmp.3.html

写了C函数strcmp来比较字符串。在 C 中,字符串是 char 指针或数组,以空字节 ('[=12=]') 结尾。因此,比较只会上升到第一个空字节。

示例:

文件 A:"abcd[=13=]efg" 文件 B:"abcd[=14=]xyz"

由于两个文件都等于空字节,所以这些位置的“字符串”是相等的,尽管后面的内容可能不同。您应该改用函数 memcmp参见此 tutorial; see examples from the reference)。

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