-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);

コードの後半では、再びstrtokonを使用していますが、デバッガーで、にデータが存在するときにの値がnullvalsになる場所が突然ないことがわかります。文字列に対して何の操作もしていないので、そこにあるデータが失われる理由がわかりません。col_valcol_val_tempcol_val

誰かが私がこの振る舞いをしている理由とこれを克服する方法を説明できますか?このため私は立ち往生しています。

ありがとう !!!

4

1 に答える 1

2

コードには(少なくとも)1つのバッファオーバーランの問題があります。

あなたはstrcpyするseqnoseqnoは1文字の長さしか宣言されていないため、文字列ターミネータはおそらくのポインタ値を上書きしますcols

于 2013-01-04T13:23:14.420 に答える