1

私は大学で得たこの質問に対する答えを見つけるために何時間も努力しています. hello world の 2 行でファイルを書き込んでこれを実行しようとしましたが、ファイルを完全に読み取るため、答えが見つかりません。助けていただければ幸いです。

学生は、テキスト ファイルを読み取り、それをそのまま印刷する次の関数を作成しました。

void ReadFile(FILE *fIn)
{
  char nextLine[MAX_LINE_LENGTH];
  while(!feof(fIn))
 {
 fscanf(fIn,"%s",nextLine);
 printf("%s\n",nextLine);
 }
}

この関数の 2 つのエラーは何ですか?

ファイル内の各行は MAX_LINE_LENGTH 文字以内で、アルファベット文字のみを含むテキスト ファイルであり、各行は「\n」で終了していると想定できます。

ありがとう。

4

3 に答える 3

1

それを行う正しい方法は次のとおりです。

void ReadFile(FILE *fIn)
{
  char nextLine[MAX_LINE_LENGTH];
  while(fgets(nextLine, MAX_LINE_LENGTH, fIn)) {
      printf("%s", nextLine);
  }
}

一部の人が投稿したように、feof を使用してループを制御することも、fscanf を使用して行を読み取ることもお勧めできません。

于 2013-07-29T16:46:23.143 に答える