原PO对C极度不熟
而且开发平台是arduino所以不知道和普通的C有没有差别
主要是function传char跟switch(char) 的问题
以下是code
************************
char command[10];
command[0]='a';
command[1]='b';
command[2]='c';
command[3]='\0';
SwitchCommand(command);
void SwitchCommand(char *cmd){
Serial.println(cmd);
switch(*cmd){
case 'abc':
Serial.println("OK");
break;
default:
Serial.println("ERROR");
break;
}
}
**************************************
问题1:
如果使用过的char要清空,除了run for循环有更好的方法吗?
目前是直接对byte覆蓋然后结尾加上\0,剩下的不管他
这样是不会显示之前的记录没错(例如a,b,c,\0,e) 会显示abc
如果command=''则会编不过
有办法先进行清空吗?还是其实大家都靠\0剩下不管他?
问题2:
char command[10];的地方
有看过char *command;的宣告方式
然后function改成SwitchCommand(char **command)
这样是不是长度不限制,对于传function会有影响吗?
照理说*command就是直接利用address沟通了吧
有点看不太懂**command....
问题3(主要):
Serial.println(cmd);的地方
可以正确输出abc没问题
但是switch(*cmd)的地方
无法进到case 'abc'
虽然后来知道原因
因为Serial.println(*cmd)只会输出a
这表示case 要a才行
但是switch(cmd)又编不过
请问这部分该怎么解决?
想要传整个char进去,并且switch出正确的答案
****
要把字串当阵列看待真的好麻烦啊QQ....
而且还有指标的问题整个头大...