【发布时间】:2012-02-08 16:10:23
【问题描述】:
我有一个大小为 1500 的缓冲区。在该缓冲区中,我需要检查 15 个字节是否全为零(从 100 到 115)。我们怎么能做到这一点(如果我们不使用任何循环)?数据是“无符号字符”类型,实际上它是一个无符号字符数组。
平台:Linux、C、gcc编译器
使用memcmp() 是否正确?我正在从智能卡读取一些数据并将它们存储在缓冲区中。现在我需要检查最后 15 个字节是否连续为零。
我在这里提到了memcmp(),因为我需要一种有效的方法;智能卡读取已经花费了一些时间。
或者进行按位比较是否正确。请建议。
【问题讨论】:
-
听起来像是一道作业题,应该有作业标签。
-
听起来像是一道作业题。查看 memcmp。
-
不,你不需要什么特别快的东西。与读取智能卡相比,循环仍然会在眨眼间完成。
-
与读取过程相比,缓冲区检查会非常快。效率在这里不是问题。是的,
memcmp()是一种可行的方法。您所指的零是 ASCII 数字'0'还是 ASCII NUL'\0'(零字节)? -
memcmp并不是特别适用。memspn或memcchr函数,如果存在的话。