原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....
而且還有指標的問題整個頭大...