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

问题描述

对不起,我的英语不好。

我有两个二进制文件

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

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

strcmp()的结果为零。

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

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

但是我发现没有什么不同。

出什么问题了?

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

解决方法

编写C函数strcmp来比较字符串。在C语言中,字符串是char指针或数组,其末尾为空字节('\0')。因此,比较只会上升到第一个空字节。

示例:

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

由于两个文件最多等于空字节,因此这些位置的“字符串”相等,尽管后面可能有所不同。您应该改用memcmp函数(请参见此tutorial ;请参见the reference中的示例)。

编辑: 正如该答案下的注释所指出的,以及其他答案中所提到的那样,strcmpmemcmp的手册页是从标准库中学习这些功能的可靠资源。

,

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

您需要改用memcmp

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