Monday 29 May 2017

Reverse Content of File ~ GNIITHELP

Program to Reverse the Contents of a File and Print it


#include<stdio.h>
#include<errno.h>
 
// to count the total number of characters inside the source file
long count_characters(FILE *);
 
void main()
{
    int i;
    long cnt;
    char ch, ch1;
    FILE *fp1, *fp2;
 
    if (fp1 = fopen("File_1.txt", "r"))    
    {
        printf("The FILE has been opened...\n");
        fp2 = fopen("File_2.txt", "w");
        cnt = count_characters(fp1); 
        
        /* 
        makes the pointer fp1 to point at the 
        last character of the file
        */
        fseek(fp1, -1L, 2);     
        printf("Number of characters to be copied %d\n", ftell(fp1));
 
        while (cnt)
        {
            ch = fgetc(fp1);
            fputc(ch, fp2);
            fseek(fp1, -2L, 1);   // shifts the pointer to the previous character
            cnt--;
        }
        printf("\n**File copied successfully in reverse order**\n");
    }
    else
    {
        perror("Error occured\n");
    }
    fclose(fp1);
    fclose(fp2);
}

/* 
count the total number of characters in the file
that *f points to
*/
long count_characters(FILE *f) 
{
    fseek(f, -1L, 2);
    long last_pos = ftell(f);   //returns the position of the last element of the file
    last_pos++;
    return last_pos;
}
To learn about File Handling in C, Visit the studytonight Lesson : File Handling in C

No comments:

Post a Comment