#include #include /* Invertiranje datoteke unutar jedne datoteke. */ int main(void) { char *dat_name = "finvert.dat"; FILE *dat; long file_pola, pomak = 0L; int ch_1, ch_2; if ((dat = fopen(dat_name, "rb+")) == NULL) { fprintf(stderr, "Ne mogu citati iz: %s!\n", dat_name); exit(1); } /* Duljina i poloviste datoteke. */ fseek(dat, 0L, SEEK_END); file_pola = ftell(dat) / 2L; /* Datoteku invertiramo. */ while (pomak < file_pola) { /* Pomak unaprijed od pocetka. Ucitaj prvi znak. */ fseek(dat, pomak, SEEK_SET); ch_1 = fgetc(dat); /* Pomak unazad od kraja. Ucitaj drugi znak. */ fseek(dat, -pomak - 1L, SEEK_END); ch_2 = fgetc(dat); /* Pomak za jedno mjesto unazad od trenutnog. Napisi prvi znak. */ fseek(dat, -1L, SEEK_CUR); fputc(ch_1, dat); /* Pomak unaprijed od pocetka. Napisi drugi znak. */ fseek(dat, pomak, SEEK_SET); fputc(ch_2, dat); ++pomak; /* Povecaj pomak! */ } fclose(dat); return 0; }