如何检查C 中的缓冲区?

joh*_*ohn 4 c linux string

我有一个大小为 1500 的缓冲区。在该缓冲区中,我需要检查 15 个字节是否全为零(从 100 到 115)。我们怎样才能做到这一点(如果我们不使用任何循环)?数据的类型是“unsigned char”,实际上它是一个unsigned char数组。

平台:Linux、C、gcc 编译器

使用memcmp()是否正确?我正在从智能卡读取一些数据并将它们存储在缓冲区中。现在我需要检查最后 15 个字节是否连续为零。我memcmp()在这里提到是因为我需要一种有效的方法;智能卡读取已经花费了一些时间。

或者按位比较是否正确。请建议。

Rem*_*eau 5

unsigned char buffer[1500];
...
bool allZeros = true;
for (int i = 99; i < 115; ++i)
{
    if (buffer[i] != 0)
    {
        allZeros = false;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

static const unsigned char zeros[15] = {0};
...
unsigned char buffer[1500];
...
bool allZeros = (memcmp(&buffer[99], zeros, 15) == 0);
Run Code Online (Sandbox Code Playgroud)