[問題] C語言 function 傳 char 問題
原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....
而且還有指標的問題整個頭大...
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.42.123.237
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1411897498.A.45C.html
推
09/28 18:03, , 1F
09/28 18:03, 1F
→
09/28 19:56, , 2F
09/28 19:56, 2F
→
09/28 19:56, , 3F
09/28 19:56, 3F
→
09/28 20:00, , 4F
09/28 20:00, 4F
→
09/28 20:01, , 5F
09/28 20:01, 5F
→
09/28 20:03, , 6F
09/28 20:03, 6F
→
09/28 20:05, , 7F
09/28 20:05, 7F
→
09/28 20:35, , 8F
09/28 20:35, 8F
→
09/28 21:37, , 9F
09/28 21:37, 9F
→
09/28 21:39, , 10F
09/28 21:39, 10F
感謝各位的回答
已經使用if+memcmp正確判斷了
現在有另一個問題是無法正確判斷sizeof
查了一下要判斷要素數量好像是要sizeof(array)/sizeof(array[0])
unsigned int data[50];
data[0]=123;
data[1]=234;
data[2]=345;
data[3]='\0'; //不知道這一行有沒有用
結果
sizeof(data) 不管輸入都多少個int都是2
sizeof(data[0])也一樣是2
所以除出來永遠是1
memset(data,'\0',sizeof(data)); //同上,不知道這對int有沒有效果還是應該怎麼寫
不知道該怎麼解決
假設有一個
unsigned int data[100]; //預留了100個空位
但是只輸入了 0 1 2三個index的數字
要怎樣設定結尾呢?
目前是寫入的時候計算count
最後另外unsigned int data2[count]來處理
不知道這樣會不會很蠢= =.....
※ 編輯: KawasumiMai (114.42.123.237), 09/28/2014 23:20:17
→
09/28 23:36, , 11F
09/28 23:36, 11F
→
09/28 23:37, , 12F
09/28 23:37, 12F
→
09/28 23:38, , 13F
09/28 23:38, 13F
→
09/28 23:38, , 14F
09/28 23:38, 14F
→
09/28 23:40, , 15F
09/28 23:40, 15F
→
09/28 23:41, , 16F
09/28 23:41, 16F
→
09/28 23:51, , 17F
09/28 23:51, 17F
→
09/29 00:07, , 18F
09/29 00:07, 18F
→
09/29 00:45, , 19F
09/29 00:45, 19F
→
09/29 00:46, , 20F
09/29 00:46, 20F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章