#include #include /* Ponasanje funkcije ftell. Pisanje, dodavanje na kraj, citanje. */ int main(void) { char *f_name = "fpos_a.dat"; FILE *fp; int c, i; /* Otvaramo datoteku za pisanje. */ if ((fp = fopen(f_name, "w")) == NULL) { fprintf(stderr, "Ne mogu pisati u: %s!\n", f_name); exit(1); } /* Kreiramo datoteku od 4 znaka: abcd. */ printf(" Pisanje u datoteku:\n"); for (c = 'a'; c <= 'd'; ++c) { printf(" Pozicija: %ld,", ftell(fp)); if (fputc(c, fp) == EOF) { fprintf(stderr, "Greska u pisanju.\n"); exit(2); } printf(" znak = %2c\n", c); } fclose(fp); /* Otvaramo datoteku za dodavanje. */ if ((fp = fopen(f_name, "a")) == NULL) { fprintf(stderr, "Ne mogu dodati u: %s!\n", f_name); exit(3); } /* Sekvencijalno dodajemo u datoteku. */ printf(" Dodavanje u datoteku:\n"); for (c = 'e'; c <= 'f'; ++c) { printf(" Pozicija: %ld,", ftell(fp)); if (fputc(c, fp) == EOF) { fprintf(stderr, "Greska u pisanju.\n"); exit(4); } printf(" znak = %2c\n", c); } fclose(fp); /* Otvaramo datoteku za citanje. */ if ((fp = fopen(f_name, "r")) == NULL) { fprintf(stderr, "Ne mogu citati iz: %s!\n", f_name); exit(5); } /* Sekvencijalno citamo tu datoteku. */ printf(" Citanje iz datoteke:\n"); for (i = 0; i < 8; ++i) { printf(" Pozicija: %ld,", ftell(fp)); /* printf(" znak = %2d\n", fgetc(fp)); */ if ((c = fgetc(fp)) >= 0) printf(" znak = %2c\n", c); /* Znak. */ else printf(" znak = %2d\n", c); /* Broj. */ } fclose(fp); return 0; }