Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define FAKTOR_BLOKIRANJA 3
- typedef struct Zatvorenik {
- int evidencioni_broj;
- char sifra_zatvorenika[8];
- char datum[11];
- char celija[6];
- short int kazna;
- int del;
- } Zatvorenik;
- typedef struct Blok {
- Zatvorenik niz[FAKTOR_BLOKIRANJA];
- int popunjenost;
- } Blok;
- void displayz(Zatvorenik z){
- printf("%d %s \n", z.evidencioni_broj, z.sifra_zatvorenika);
- printf("------\n");
- }
- void displayb(Blok* b) {
- int i = 0;
- for (;i<3;i++){
- displayz(b->niz[i]);
- }
- }
- FILE* formiranje(char* dat) {
- FILE *f = fopen(dat, "wb+");
- if (f == NULL){
- printf("Neuspesno citanje datoteke %s", dat);
- exit(1);
- }
- return f;
- }
- FILE* dopisi(FILE *f, Blok* blok){
- fwrite(blok, sizeof(Blok), 1, f);
- //printf("OKE");
- return f;
- }
- int load_blok(FILE *f, Blok* cur){
- int broj;
- broj = fread(cur, sizeof(Blok), 1, f);
- fseek(f, sizeof(cur), ftell(f));
- //printf("--%d--", broj);
- return broj;
- }
- int search(FILE *f, int key, Blok* retb){
- rewind(f);
- Blok bl;
- int keyfirst, keylast, i;
- Zatvorenik zat;
- i = 0;
- int ucitano;
- do{
- ucitano = load_blok(f, &bl);
- keyfirst = bl.niz[0].evidencioni_broj;
- keylast = bl.niz[2].evidencioni_broj;
- } while (ucitano == 1 && keylast <= key);
- *retb = bl;
- for (i = 0;i<FAKTOR_BLOKIRANJA;i++){
- zat = bl.niz[i];
- if (zat.evidencioni_broj == key){
- return i;
- }
- }
- return -1;
- }
- void dodaj(FILE *f, Zatvorenik z) {
- }
- int main()
- {
- char datoteka[20] = "database.bin";
- FILE *db = formiranje(datoteka);
- Blok* current_blok;
- Zatvorenik* z1 = malloc(sizeof(Zatvorenik));
- z1->evidencioni_broj = 10;
- strcpy(z1->sifra_zatvorenika, "P23JSD0");
- strcpy(z1->datum, "11/02/2018");
- strcpy(z1->celija, "CEL15");
- z1->kazna = 220;
- z1->del = 0;
- Zatvorenik* z2 = malloc(sizeof(Zatvorenik));
- z2->evidencioni_broj = 12;
- strcpy(z2->sifra_zatvorenika, "DP2DDDD");
- strcpy(z2->datum, "14/6/2018");
- strcpy(z2->celija, "CEL16");
- z2->kazna = 190;
- z2->del = 0;
- Zatvorenik* z3 = malloc(sizeof(Zatvorenik));
- z3->evidencioni_broj = 15;
- strcpy(z3->sifra_zatvorenika, "1231237");
- strcpy(z3->datum, "14/6/2018");
- strcpy(z3->celija, "CEL16");
- z3->kazna = 190;
- z3->del = 0;
- Blok* bl = malloc(sizeof(Blok));
- bl->niz[0] = *z1;
- bl->niz[1] = *z2;
- bl->niz[2] = *z3;
- Zatvorenik* z4 = malloc(sizeof(Zatvorenik));
- z4->evidencioni_broj = 20;
- strcpy(z4->sifra_zatvorenika, "1111110");
- strcpy(z4->datum, "14/6/2019");
- strcpy(z4->celija, "AAASS");
- z4->kazna = 190;
- z4->del = 0;
- Blok* bl2 = malloc(sizeof(Blok));
- bl2->niz[0] = *z4;
- bl2->niz[1] = *z4;
- bl2->niz[2] = *z4;
- dopisi(db, bl);
- dopisi(db, bl2);
- rewind(db);
- load_blok(db, bl2);
- displayb(bl2);
- load_blok(db, bl2);
- displayb(bl2);
- //strcpy(*z1.)
- Blok retbl;
- int ser = search(db,20,&retbl);
- printf("%d world!\n", ser);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement