gpt4 book ai didi

比较 C char 和 char*

转载 作者:行者123 更新时间:2023-11-30 14:50:40 25 4
gpt4 key购买 nike

我有一个二维数组(commandNames},我正在搜索它以查找与从 Arduino 串行输入读取的单个字符的匹配项。比较代码不起作用。

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...

“if (command == (char)cmd)”行就是问题所在。

最佳答案

看来您只是将某种输入给出的字符与 1 个字符的字符串进行比较。因此,您只需取消引用指针并比较字符即可:

command == *cmd
^

由于 cmd 的类型为 char*,因此不需要再次进行类型转换,因此我放弃了转换 ((char) )。

xander noted in commentschar cmd = commandNames[i][1][0]在可读性方面更好。

顺便说一句,char *cmd = (char*)commandNames[i][1] 是一些危险代码。您正在将指向字符串文字的指针转换为可修改的指针(删除 const 修饰符)。由于您不需要修改 cmd,因此最好将其声明并定义为 const char*,并将转换放在右侧 (RHS)。

关于比较 C char 和 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48901772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com