Mega Code Archive

 
Categories / C / Code Snippets
 

Copy a file in reverse order

#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { long j; FILE *in, *out; char ch; if(argc != 3) { printf("Usage: revcopy <source> <destination>.\n"); exit(1); } if((in = fopen(argv[1], "rb")) == NULL) { printf("Cannot open input file.\n"); exit(1); } if((out = fopen(argv[2], "wb"))==NULL) { printf("Cannot open output file.\n"); exit(1); } /* find end of source file */ fseek(in, 0L, SEEK_END); j = ftell(in); /* copy file in reverse order */ j = j-1; /* back up past end-of-file mark */ while(j >= 0L) { fseek(in, j, SEEK_SET); ch = fgetc(in); fputc(ch, out); j--; } fclose(in); fclose(out); return 0; }