我在嵌入式系统中使用c语言。我有这个uint8数组。

static uint8_t data_array[20];

数据数组的内容以'\n'结束。
我想检查前3个字节是否是“abc”。我就是这样做的。
if (data_array[0]=='A' && data_array[1]=='B' && data_array[2]=='C')
{
    printf("pattern found\n");
}

有没有更优雅的方式来检测图案?如果模式由10个字节组成,我的方法可能会很麻烦。

最佳答案

使用循环:

static uint8_t data_array[20] = "ABC";
static uint8_t s[4] = "ABC";
static uint8_t length = 3;

uint8_t bool = 1;
for (int i = 0; i < length; i++) {
    if (s[i] != data_array[i]) {
        bool = 0;
        break;
    }
}
if (bool) {
    printf("pattern found\n");
}

Live code here

09-27 00:46
查看更多