1

だから私はファイルI/Oを行う方法を学ぶことに取り組んでいますが、私が使用している本はファイルから入力を受け取る方法を教えるのにひどいです。以下は、ファイルから入力を受け取る方法の例ですが、機能しません。私はそれを一語一語コピーしました、そしてそれがファイルの終わりに達するまで(または彼らが本で言うように)名前のリストをループするはずですが、そうではありません。実際、whileループをそこに残しておくと、何も出力されません。

#include <stdio.h>
#include <conio.h>
#define MAX 250
int main()
{

  char name[MAX]; 
  FILE*pRead;

  pRead=fopen("test.txt", "r");
  if (pRead==NULL)
    {
     printf("file cannot be opened");
    }else      


     printf("contents of test.txt");
     while(fgets(name,sizeof(name),pRead)!=NULL){
           {
            printf("%s\n",name);
            fscanf(pRead, "%s", name);
           }


             getch();
   }

オンラインでも、私が見るすべての初心者向けチュートリアルでは、これにいくつかのバリエーションがありますが、少しでも機能させることができないようです。

4

1 に答える 1

1

配列が小さすぎるため、fscanfを読み取っているときにメモリが上書きされ、奇妙な動作が発生すると思います

ファイルを読み取りたいだけの場合(入力ファイルに1行に1つの名前があり、その後に改行があると仮定します)、代わりにfgets()を使用してファイルを読み取ります。

#define MAXLINE 256

char name[MAXLINE]; 

while (fgets(name,sizeof(name),pRead)!=NULL)
{
  // do whatever
}
于 2012-11-17T16:56:24.770 に答える