我是C新手,試圖分割字符數組(我從Ardunio的串行端口接收)。我查了一些教程,並提出了這個。請幫我調試一下。混淆:指針和字符數組在C
char action[10];
unsigned long duration;
void split(char input[20])
{
char *param, *ptr;
param = strtok_r(input, "#", &ptr);
action = *param; // Need help with this line
param = strtok_r(NULL, "!", &ptr);
duration = (unsigned long) *param; // Need help with this line
}
據我所知,strtok_r返回一個指向分隔符(#)後面的字符的指針。所以如果我想動作[]是輸入[]的子集字符數組直到分隔符,我該怎麼辦?
編輯: 輸入是這樣的:「left#1000!」
陣列是特殊的,除了聲明不能被 「分配」 用'='運算符。這裏需要指針'char * action'。你需要首先將字符轉換爲數字(在這種情況下使用'strtoul')以獲得'unsigned long'中的持續時間。 – nhahtdh 2012-07-16 13:22:01
你可以發表一個你的源字符串的例子嗎?它是否像'paramparamparamparam#duration.NNN'? – 2012-07-16 13:23:35
如果您的輸入使用'!'作爲終止標記,請將其添加到分隔符列表中:'「#!」' – dasblinkenlight 2012-07-16 13:33:19