Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In C, how to print out a txt file line by line?

Tags:

c

file

text

fopen

int main()
{
   FILE *infile;
   FILE *infile2;
   char input[255],input2[255];
   int status1, status2;

   infile = fopen("test.txt", "r");
   infile2 = fopen("test2.txt", "r");
   if(infile == NULL)
   {
      printf("Can not open file 1!\n");
   }
   else if(infile2 == NULL)
   {
      printf("Can not open file 2!\n");
   }
   else
   {
      do
      {
        status1 = fscanf(infile, "%s", &input);
        status2 = fscanf(infile2, "%s", &input2);

        printf("File 1: %s\n File 2: %s\n", input, input2);
     }while(status1 != -1 || status2 != -1);
   }
   fclose(infile);
   fclose(infile2);

   return 0;
}

My output looks like this:

Output

I would like to print out file 1 in one line not word by word. The same goes for file2. I'm kinda new to C so I'm stuck.

like image 944
Knut André Syversen Avatar asked Feb 04 '16 09:02

Knut André Syversen


1 Answers

If you would like to read the entire line, use fgets function instead of fscanf:

char *status1, *status2;
   .
   .
   .
do {
    status1 = fgets(input, sizeof(input), infile);
    status2 = fgets(input2, sizeof(input2), infile2);
    printf("File 1: %s File 2: %s", input, input2);
} while (status1 || status2);

Note how printf no longer uses \n. This is because fgets keeps \n from the file inside your input string.

like image 53
Sergey Kalinichenko Avatar answered Oct 04 '22 18:10

Sergey Kalinichenko