繁体   English   中英

无法在C中将字符串拆分为数组

[英]Trouble splitting string into array in C

我想将一个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
  ******* 
  ******* 

谢谢

strtok文档指定:

令牌的此结尾将自动替换为空字符,并且该令牌的开头由函数返回。

您的每个令牌都是7位数字,并且您要为每个令牌分配7个字符。 但是,这不考虑空字符终止符。 您实际上需要8个字符的空间。

您应该将temp_dow声明更改为:

char temp_dow[3][8];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM