C Program to Read last n characters from the file

C Program to Read last n characters from the file.

The C library function int fseek(FILE *stream, long int offset, int whence) sets the file position of the stream to the given offset.

Following is the declaration for fseek( ) function.
             
int fseek(FILE *stream, long int offset, int whence)

Stream is the pointer to a FILE object that identifies the stream.

Offset is the number of bytes to offset from whence.

Whence is the position from where offset is added. It is specified by one of the following constants.

SEEK_SET - Beginning of file.
SEEK_CUR - Current position of the file pointer
SEEK_END - End of file.

--------------------------------------------------------------------------------------------------------------------------


#include<stdio.h>
int main( )
{
    FILE *fp;
    char ch;
    int num;
    long length;
    printf("Enter the value of num : ");
    scanf("%d", &num);
    fp = fopen("test.txt","r");
    if(fp == Null)
    {
         puts("cannot open this file");
         exit(1);
    }
     fseek(fp,0,SEEK_END);
     length = ftell(fp);
     fseek(fp, (length-num), SEEK_SET);
     do
     {
        ch = fgetc(fp);
        putchar(ch);
      } while(ch! = EOF);
fclose(fp);
return(0);
}

--------------------------------------------------------------------------------------------------------------------------

Explanation

--------------------------------------------------------------------------------------------------------------------------

Open file in the Read mode.
fp = fopen("test.txt","r");

We are moving file pointer to the last location using fseek( ) function and passing SEEK_END constant.
fseek(fp,0,SEEK_END);

Now evaluate the current position of the file pointer.
length = ftell(fp);

ftell( ) will tell you the location of file pointer.
File Location = Total Number of Characters on File

To Read last n characters from the file we need to move pointer to (length-n) character back on the file. and from that location we need to read file.
fseek(fp, (length-num), SEEK_SET);

--------------------------------------------------------------------------------------------------------------------------

Output

--------------------------------------------------------------------------------------------------------------------------

Enter the Value of n : 2
.com
Actual Content from File
File Handling in C
Basic C.com


EmoticonEmoticon