我想将char字符串拆分为数组temp_dow。
//parse incoming string
char input[] = {"1111111,0000000,1010101"};
char temp_dow[3][7];
char *tok1;
int i = 0;
tok1 = strtok(input, ",");
while (tok1 != NULL) {
char temp[7];
strcpy(temp, tok1);
strcpy(temp_dow[i],temp);
tok1 = strtok(NULL, ",");
printf ("<<<<<<<< %s\n",temp_dow[i]);
i++;
}
printf ("******* %s\n",temp_dow[0]);
printf ("******* %s\n",temp_dow[1]);
printf ("******* %s\n",temp_dow[2]);
输出不匹配。 while循环外的temp_dow []完全错误。它显示指针的值而不是实际值?
这是输出。
<<<<<<<< 1111111
<<<<<<<< 0000000
<<<<<<<< 1010101
******* 1010101
*******
*******
由于
答案 0 :(得分:0)
strtok文档指定:
令牌的这一端自动被空字符替换,并且该函数返回令牌的开头。
你的每个代币都是7位数字,你为每个代币分配7个字符。但是,这不考虑空字符终止符。实际上你需要8个字符的空间。
您应该将temp_dow声明更改为:
char temp_dow[3][8];