问题描述
对不起,我的英语不好。
然后将二进制文件分别存储到缓冲区中。
然后我使用strcmp()比较了两个缓冲区。
strcmp()的结果为零。
所以我认为两个二进制是相同的。
打开两个二进制文件,然后检查是否没有差异。
但是我发现没有什么不同。
出什么问题了?
解决方法
编写C函数strcmp
来比较字符串。在C语言中,字符串是char
指针或数组,其末尾为空字节('\0'
)。因此,比较只会上升到第一个空字节。
示例:
文件A:"abcd\0efg"
文件B:"abcd\0xyz"
由于两个文件最多等于空字节,因此这些位置的“字符串”相等,尽管后面可能有所不同。您应该改用memcmp
函数(请参见此tutorial ;请参见the reference中的示例)。
编辑:
正如该答案下的注释所指出的,以及其他答案中所提到的那样,strcmp
和memcmp
的手册页是从标准库中学习这些功能的可靠资源。
您不能使用字符串函数比较二进制数据。
您需要改用memcmp
。