Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- transPrim tr;
- int adr;
- int i;
- baketPrim baket;
- tr = unesiTransakciju(); //pozivanje funkcije koja omogucava upisivanje podataka sa tastature
- adr = poz(tr.key); //u adr stavlja adresu baketa koji se racuna u f-ji poz
- FILE *f = fopen(nazivAktivne, "rb+");
- long ofset = (adr-1)*sizeof(baketPrim); //racuna koliko treba da se odmakne od pocetka datoteke da bi stao na pocetnu poziciju zeljenog baketa
- int greska = fseek(f, ofset, SEEK_SET); //fseek(funkcija za podesavanje pozicije u fajlu) vraca vrednost 0, ako sve uradi, a u suprotnom vraca -1.
- if (greska == 0)
- {
- fread(&baket, sizeof(baketPrim), 1, f);
- for (i=0; i<b; i++)
- {
- if ((baket[i].status == 'z') && (baket[i].key == tr.key))
- {
- printf("kljuc baket je %d\n", baket[i].key);
- printf("Vec postoji slog sa ovim kljucem u primarnoj datoteci\n");
- fclose(f);
- return;
- }
- if ((baket[i].status == 's') || (baket[i].status == 'i'))
- {
- baket[i] = tr;
- fseek(f, ofset, SEEK_SET);
- fwrite(&baket, sizeof(baketPrim), 1, f);
- fclose(f);
- printf("Izlazi iz funkcije pre return naredbe \n");
- return;
- }
- }
- }
- fclose(f);
- printf("Usli smo u zonu\n");
- zonaPrekoracenja = fopen(nazivZone, "rb+");
- i=0;
- while(fread(&baket, sizeof(baketPrim), 1, zonaPrekoracenja))
- {
- for (i=0; i<b; i++)
- {
- if ((baket[i].status == 'z') && (baket[i].key == tr.key))
- {
- printf("Vec postoji slog sa ovim kljucem u zoni prekoracenja\n");
- fclose(zonaPrekoracenja);
- return;
- }
- if ((baket[i].status == 's') || (baket[i].status == 'i'))
- {
- baket[i] = tr;
- fseek(zonaPrekoracenja, 0, SEEK_SET);
- fwrite(&baket, sizeof(baketPrim), 1, zonaPrekoracenja);
- printf("Izlaz iz zone pre return naredbe");
- fclose(zonaPrekoracenja);
- return;
- }
- }
- }
- fclose(zonaPrekoracenja);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement