Zadatak: Napisati funkcije za:

1) funkcija za umetanje znaka na kraj tekstualnog fajla
2) funkcija za umetanje znaka na početak tekstualnog fajla
3) funkcija za umetanje znaka na poziciju k u tekstualni fajl


Rešenje 1:  Funkcija za dodavanje slova na kraj fajla (rešenje u slici):

rešenje u slici

Objašnjenje: Prvo se vrši pozicioniranje na kraj fajla, a onda se pomoću funkcije fputc upisuje jedan karakter na to mesto. Nakon ove funkcije, na kraju fajla je dodano jedno slovo, a pozicionira se na sledeću lokaciju koja je onda kraj fajla.

Ako bismo koristili samo ovu funkciju, program bi mogao da izgleda ovako:

slika celog programa

Rešenje 3: Funkcija za umetanje znaka na poziciju k u tekstualni fajl

slika koda koji treba prekucati

(! ovo ne znači da će sve raditi kako treba !)

Objašnjenje koda gore: Ako se pozicioniramo na jedno mesto pre kraja fajla, u promenljivu c se sa fgetc naredbom postavi karakter sa tog mesta, nakon toga se pozicionira jedno mesto dalje i tu se iz promenljive c ubaci karakter - znači, za jedno mesto ka kraju.

Pošto se bilo sa čitanjem ili postavčjanjem karaktera u fajl, sa svakom od tih naredbi, po završetku naredbe pozicija u fajlu pomeri za jedno mesto dalje, potrebno je vratiti se tri mesta prema početku fajla.

Ovo se ponavlja sve dok se ne dođe do pozicije na koju želimo da upišemo zadati karakter.

Pošto je rad sa tekstualnim fajlovima zavisan od implementacije na računaru, ovo rešenje nije nužno i uvek tačno !

Zbog toga je najjednostavnije raditi na sledeći način:

Napraviti novi tekstualni fajl, pa u njega upisivati iz našeg fajla karaktere (koristiti režim za dodavanje na kraj fajla), sve dok se ne upiše karakter na poziciji k-1. Onda upisati karakter koji želimo dodati, a zatim nastaviti sa upisivanjem iz prvog fajla sve dok se ne dođe do kraja fajla (EOF).


Rešenje 2: Funkcija za umetanje znaka na početak tekstualnog fajla

Preporuka je raditi na sledeći način:

Napraviti novi fajl (režim w) i u njega upisati znak koji želimo.

Zatim u njega dodavati redom znakove iz prvog fajla (režim za dodavanje), sve dok se ne dođe do kraja fajla (EOF).

Ako baš želite da se rešenje nalazi u prvom fajlu, uvek možete da kopirate sadržaj dobijenog fajla u prvi fajl i to na sledeći način:

Funkcija koja kopira jednu datoteku u drugu može biti napisana na sledeći način:

void cpy(FILE *fpulaz, FILE *fpizlaz) {
        int c;
        while((c=getc(fpulaz))!=EOF)
                putc(c,fpizlaz);
}

Dodatni linkovi:

Rad sa fajlovima (škola koda)

C funkcije za čitanje i pisanje (škola koda)

Neki rešeni zadaci sa datotekama iz spoljašnjih izvora


Poslednja izmena: субота, 13. април 2019, 00:50