Jin*_*Bae -4 c binary file strcmp
首先抱歉我的英语不好。
我有两个二进制文件。
我将二进制文件分别存储到缓冲区中。
然后我使用 strcmp() 比较了两个缓冲区。
strcmp() 的结果为零。
所以我认为两个二进制是相同的。
打开两个二进制文件,然后检查是否有差异。
但我发现差别不大。
问题是什么?
strcmp() 函数不是将二进制与二进制进行比较的正确方法?
Nik*_*rin 7
C 函数strcmp用于比较字符串。在 C 中,字符串是以char空字节 ( '\0')结尾的指针或数组。因此,比较只进行到第一个空字节。
strcmp
char
'\0'
例子:
文件 A:"abcd\0efg" 文件 B:"abcd\0xyz"
"abcd\0efg"
"abcd\0xyz"
由于两个文件都等于空字节,因此这些位置的“字符串”是相等的,尽管后面的内容可能不同。您应该改用该函数memcmp(请参阅本教程;请参阅参考资料中的示例)。
memcmp
编辑:正如此答案下的评论所指出的以及在另一个答案中所提到的,手册页strcmp和memcmp是从标准库中了解这些功能的可靠资源。
归档时间:
5 年,1 月 前
查看次数:
224 次
最近记录:
5 年 前