0

strtok でいくつかの char トークンを取得する次のコードがあり、これらのトークンを 1 つずつテーブルに保持し、最終的にこれらのトークンを出力します。私のエラーはTABLE行にあります:

error: invalid conversion from 'char* to 'char''

ポインターと文字について誤解していて、TABLE行の書き方がわかりません((次の形式にしたい))。私は次のようなものを試しました

table[i][5+(i/2)] = *ptr;

しかし、セグメンテーション違反がありました。

i = 0;
int offset = 5;
char* ptr;
ptr = strtok(buff,"do something");
char table[1][10];       
while (ptr != NULL)
 {
  if (i == 0)
     strcat(machine, ptr);
  if (i == 2)
     strcat(number, ptr);
  if (i == 4)
     strcat(hr, ptr); 
  if (i == 6)
     strcat(dw, ptr); 
  if (i == 8)
     strcat(vcc, ptr);
  ptr = strtok(NULL,"do something");
  table[i][5+(i/2)] = ptr;     
  i++;
 }
printf("Final: %s, %s, %s, %s, %s\n", machine, number, hr, dw, vcc);
4

2 に答える 2

3

table[i][5+(i/2)] = ptr; 値の代わりにアドレスを割り当てようとしているため、間違っています。

table[i][5+(i/2)] = *ptr;正しい。で値を与えますptr

セグメンテーション違反は が原因ですi。配列境界外のアドレスを参照しています。

于 2013-06-26T07:38:26.487 に答える