我有一个二维数组(commandNames),我正在寻找一个匹配单个字符串,从Arduino Serial输入读取。比较代码不工作。
const char* commandNames[COMMAND_COUNT][4] = {
{ "STOP", "p", "M", "0" },
{ "STOP LEFT", "s", "M", "9" },
{ "STOP RIGHT", "S", "M", "10" },
{ "FORWARD", "f", "M", "1" },
...
};
char command = Serial.read();
for (int i = 0; i < COMMAND_COUNT; i++) {
char *cmd = (char*)commandNames[i][1];
if (command == (char)cmd) { <-- Need help with this line
... we have a match...
行&#34; if(command ==(char)cmd)&#34;是问题。
答案 0 :(得分:1)
您似乎只是将sorta输入中给出的字符与1-char字符串进行比较。所以你只需取消引用指针并比较字符:
command == *cmd
^
由于cmd
属于char*
类型,因此无需再次进行类型转换,因此我放弃了转换((char)
)。
作为xander noted in comments,char cmd = commandNames[i][1][0]
在可读性方面更胜一筹。
作为旁注,char *cmd = (char*)commandNames[i][1]
是一些危险的代码。您将指向字符串文字的指针转换为可修改的指针(删除const
修饰符)。由于您不需要修改cmd
,因此最好将其声明并定义为const char*
,并将转换放在右侧(RHS)。