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 回答