0

外部ファイルを読み込んで、テキスト全体または選択した行を印刷するにはどうすればよいですか?

FILE *fp;
fp=fopen("c:\\students.txt", "r");

ファイルを読み取ることは理解していますが、その後は迷子になります。助けてください!!!

バイナリで読み取る必要がありますか、それともテキスト ファイルは受け入れられますか?

4

1 に答える 1

0
  • ファイルストリームへのポインタを取得しますfopen()
  • fread()プログラムが .txt ファイル内で見つけることができる実際のデータの量のみを返します。これは非常に誤解を招く可能性があります。主な用途は、ループの要素数を取得することです。ファイルがすでに何を持っているべきかを正確に知っていれば、ファイルをプログラムにアップロードし、この関数に触れることなく画面に印刷することができます。ファイルの内容がわからない場合にのみ使用してください。
  • getline()特定の行を印刷するための頼りになるものです。これを回避する方法はありません。そのための特定のライブラリが必要になります。

これは、これについて自己学習をしながら書いたコード例です。これらのそれぞれがどのように使用されているかを示し、プログラムとプログラム外の別の txt ファイルの両方に出力します。ただし、ありませんgetline()

/*
Goals: 

Create an array of 5 values
Input 5 vales from a pre-created file, into the new array
Print out the 5 values into another file. 
Close the file. 
*/


#include <stdio.h>
#include <stdlib.h>
#define DATAFILE "E:/Data.txt"
#define REPORT "E:/Report.txt"

//prototypes
FILE *Open_File();
void Consolodate_Array(int a_array[], FILE *file_pointer);
void Print_File(int a_array[], FILE *report_pointer);
void end_function(FILE *file_pointer, FILE *report_pointer);



int main(int argc, char *argv[])
{
  int array[5];

  FILE *Datatext = Open_File();
  //Declared "Datatext" to be equal to Open_File's Return value.
  //FILE itself is like Int, Double, Float, ect.
  FILE *ReportText = fopen(REPORT, "w"); 
  //Did the same as above, just not in a separate function. This gives us a 
  //Pointer to the REPORT.txt file, in write mode instead of read mode. 

  Consolodate_Array(array, Datatext);
  Print_File(array, ReportText);
  end_function(Datatext, ReportText);

  system("PAUSE");  
  return 0;
}

/*----------------------------------------------------------------------*/
//This function should open the file and pass a pointer
FILE *Open_File()
{
  return fopen(DATAFILE, "rb");
}

/*----------------------------------------------------------------------*/
//This function should input the variables gotten for the file, into the array
void Consolodate_Array(int a_array[], FILE *file_pointer)
{
   for(int i=0; i<5; i++)
       fscanf(file_pointer, "%i", &a_array[i]);
}

/*----------------------------------------------------------------------*/
//This function prints out the values into the second file, & at us too.
void Print_File(int a_array[], FILE *report_pointer)
{   
   for(int i=0; i<5; i++)
   { 
      printf("%i\n", a_array[i]);
      fprintf(report_pointer, "%i\n", a_array[i]); 
   }
}

/*----------------------------------------------------------------------*/
//This function closes the file.
void end_function(FILE *file_pointer, FILE *report_pointer)
{
   fclose(file_pointer);
   fclose(report_pointer);
   //closes both files we worked on. 
}
于 2013-05-01T21:23:29.660 に答える