-2

txt ファイルから各単語を取得して、配列に配置しようとしています。私のコードでは、ファイルから各単語を取得して文字列として保存しても問題ありません。ただし、文字列を配列に入れて印刷しようとすると、最後の数行だけが印刷され、すべて歪んでしまいます。

これが私のコードです:

  typedef char * string;
  string strings[100];
  FILE* file = fopen(argv[1], "r");
  char line[256];

  while(fgets(line, sizeof(line), file))
  {
    string tmp = strtok(line, " ,'.-");

    while(tmp != NULL)
    {
      strings[count]= tmp;
      tmp = strtok(NULL, " ,.'-;");
      count++;
    }
  }

  int c2 = 0;

  while(strings[c2] != NULL)
  {
    printf("%s, ", strings[c2]);
    c2++;
  }

  return 0;
}

私が読んでいるファイルのテキストは次のとおりです。

歩道が途切れる場所がある
そして通りが始まる前に、
そこには草が柔らかく白く育ち、
そこでは太陽が真っ赤に明るく燃え、
そしてそこに月鳥が飛び立って休む
ペパーミント風で涼しく。
4

1 に答える 1

1

いくつかの明らかな問題:

strings[count]= tmp;

これは単なるポインタ割り当てです。そして tmp は、割り当てを行うたびに同じ値になります。ループを一周するたびに新しい文字列を割り当てる必要があります。そして、strcpy を使用してコピーします。

次に、印刷ループは、文字列配列が null ポインターで初期化されていることを前提としています。そうではない。まったく初期化していません。

于 2013-03-29T23:36:14.803 に答える