C/File/File End

Материал из C\C++ эксперт
Перейти к: навигация, поиск

Check if End Of File has been reached: how to use feof

<source lang="cpp">

  1. include <stdio.h>

int main () {

 FILE * pFile;
 long n = 0;
 pFile = fopen ("my.txt","rb");
 
 if (pFile==NULL) 
     perror ("Error opening file: my.txt");
 else
 {
   while (!feof(pFile)) {
     fgetc (pFile);
     n++;
   }
   fclose (pFile);
   printf ("Total number of bytes in my.txt: %d\n",n);
 }
 return 0;

}

      </source>


Copy a file: how to use feof

<source lang="cpp">

  1. include <stdio.h>
  2. include <stdlib.h>

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

 FILE *in, *out;
 char ch;
 if(argc!=3) {
   printf("You forgot to enter a filename.\n");
   exit(1);
 }
 if((in=fopen(argv[1], "rb"))==NULL) {
   printf("Cannot open source file.\n");
   exit(1);
 }
 if((out=fopen(argv[2], "wb")) == NULL) {
   printf("Cannot open destination file.\n");
   exit(1);
 }
 /* This code actually copies the file. */
 while(!feof(in)) {
   ch = getc(in);
   if(!feof(in)) putc(ch, out);
 }
 fclose(in);
 fclose(out);
 return 0;

}

      </source>


Read and check if the file end has been reached

<source lang="cpp">

  1. include <stdio.h>
  2. include <stdlib.h>

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

 FILE *fp;
 char ch;
 if((fp = fopen(argv[ 1 ], "r")) == NULL) {
   printf("Cannot open file.\n");
   exit(1);
 }
 while((ch=getc(fp))!=EOF) {
   printf("%c", ch);
 }
 fclose(fp);
 return 0;

}


      </source>


Reads files and displays them on the screen: use EOF

<source lang="cpp">

  1. include <stdio.h>
  2. include <stdlib.h>

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

 FILE *fp;
 char ch;
 if(argc!=2) {
   printf("You forgot to enter the filename.\n");
   exit(1);
 }
 if((fp=fopen(argv[1], "r"))==NULL) {
   printf("Cannot open file.\n");
   exit(1);
 }
 ch = getc(fp);   /* read one character */
 while (ch!=EOF) {
   putchar(ch);  /* print on screen */
   ch = getc(fp);
 }
 fclose(fp);
 return 0;

}

      </source>