-2

我正在使用 strtok() 字符串标记器

输入就像说

"a,b,c,d|12,34,56,78"

我在做

      char * cols;
      char * vals;
      $char col_val_temp[1024] = {0};
      $char col_val[1024] = {0};

      cols = strtok(input,"|");
      vals = strtok('\0',"|");
      // now vals will have "12,34,56,78"
      strcpy(col_val_temp,vals);
      strcpy(col_val,col_val_temp);

在代码的后面部分,我再次使用strtokonvals但是,我在调试器中看到突然出现的情况,col_valcol_val_temp. 我没有对col_val字符串进行任何操作,所以我不明白为什么那里的数据会丢失。

有人可以解释为什么我会出现这种行为以及如何克服这个问题。我因此而陷入困境。

谢谢 !!!

4

1 回答 1

2

您的代码中存在(至少)一个缓冲区溢出问题。

你做一个strcpyto seqnoseqno被声明为只有一个字符长,因此字符串终止符可能会覆盖 . 的指针值cols

于 2013-01-04T13:23:14.420 回答