在C语言中将字符串拆分为数组时遇到问题

在C语言中将字符串拆分为数组时遇到问题,c,arrays,string,split,char,C,Arrays,String,Split,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[

我想将一个字符字符串拆分为一个数组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]);
//解析传入字符串
字符输入[]={“11111110000000 1010101”};
煤价指数[3][7];
char*tok1;
int i=0;
tok1=strtok(输入“,”);
while(tok1!=NULL){
炭温[7];
strcpy(温度,tok1);
strcpy(临时性,临时性);
tok1=strtok(空,“,”);

printf(“strtok文档指定:

令牌的这一端将自动替换为空字符,函数将返回令牌的开头

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

您应将临时声明更改为:

char temp_dow[3][8];

7
-->
8
:+1代表NUL字符。
strcpy(temp,tok1);strcpy(temp_-dow[i],temp);
-为什么?另外,为NUL-terminator分配空间。确实如此。为什么不干脆
strcpy(temp_-dow[i],tok1);
?删除上面的两行。啊,谢谢!NUL终结者是个问题。使用
strep()
在较新的程序中。虽然
strtok()
是可移植的,但它无法处理空字段。
char temp_dow[3][8];