作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将一个字符字符串拆分为一个数组 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
*******
*******
谢谢
最佳答案
strtok 文档指定:
This end of the token is automatically replaced by a null-character, and the beginning of the token is returned by the function.
每个标记都是 7 位数字,并且您为每个标记分配 7 个字符。但是,这并没有考虑空字符终止符。您实际上需要 8 个字符的空间。
您应该将 temp_dow 声明更改为:
char temp_dow[3][8];
关于c - 在C中将字符串拆分为数组时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27325714/
我是一名优秀的程序员,十分优秀!