Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///// MAIN
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <stdlib.h>
- #include "header.h"
- const char* const imeDatoteke = "C:\\Users\\student\\source\\repos\\aaaaLV8\\clanovi.bin";
- int main() {
- int temp = 1;
- kreiranjeDatoteke(imeDatoteke);
- while (temp) {
- temp = izbornik(imeDatoteke);
- }
- printf("Kraj programa!\n");
- return 0;
- }
- /////// FUNCTIONS
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include "header.h"
- static int brojClanova = 0;
- void kreiranjeDatoteke(const char* const imeDatoteke) {
- FILE* pF = fopen(imeDatoteke, "wb");
- if (pF == NULL) { exit(EXIT_FAILURE); }
- fwrite(&brojClanova, sizeof(int), 1, pF);
- fclose(pF);
- }
- int izbornik(const char* const imeDatoteke) {
- printf("====================");
- printf("Odaberite jednu od ponudenih opcija:");
- printf("====================\n");
- printf("\t\t\tOpcija 1: Dodavanje clanova!\n");
- printf("\t\t\tOpcija 2: Citanje clanova!\n");
- printf("\t\t\tOpcija 3: Ispis o svim korisnicima!\n");
- printf("\t\t\tOpcija 4: Pretraga po ID-u!\n");
- printf("\t\t\tOpcija 5: Zavrsetak programa!\n");
- printf("======================================\
- ======================================\n");
- int uvjet;
- static CLAN* poljeClanova = NULL;
- static CLAN* pronadeniClan = NULL;
- scanf("%d", &uvjet);
- switch (uvjet) {
- case 1:
- dodavanjeClanova(imeDatoteke);
- break;
- case 2:
- if (poljeClanova != NULL) { free(poljeClanova); poljeClanova = NULL; }
- poljeClanova = (CLAN*)ucitavanjeClanova(imeDatoteke);
- if (poljeClanova == NULL) { exit(EXIT_FAILURE); }
- break;
- case 3:
- ispisivanjeClanova(poljeClanova); break;
- case 4:
- pronadeniClan = (CLAN*)pretrazivanjeClanova(poljeClanova); break;
- case 5:
- uvjet = izlazIzPrograma(poljeClanova); break;
- default:
- uvjet = 0;
- }
- return uvjet;
- }
- void dodavanjeClanova(const char* const imeDatoteke) {
- FILE* pF = fopen(imeDatoteke, "rb+");
- if (pF == NULL) { perror("Dodavanje clanova"); exit(EXIT_FAILURE); }
- fread(&brojClanova, sizeof(int), 1, pF);
- CLAN temp = { 0 };
- temp.id = brojClanova;
- getchar();
- printf("Unesite ime clana!\n");
- scanf("%19[^\n]", temp.ime);
- printf("Unesite prezime clana!\n");
- getchar();
- scanf("%29[^\n]", temp.prezime);
- printf("Unesite adresu clana!\n");
- getchar();
- scanf("%49[^\n]", temp.adresa);
- printf("Unesite broj mobitela clana!\n");
- scanf("%d", &temp.brMob);
- do {
- printf("Unesite broj posudenih filmova:\n");
- scanf("%d", &temp.brFilm);
- } while (temp.brFilm > 5);
- fseek(pF, sizeof(CLAN) * brojClanova, SEEK_CUR);
- fwrite(&temp, sizeof(CLAN), 1, pF); rewind(pF); brojClanova++; fwrite(&brojClanova, sizeof(int), 1, pF);
- fclose(pF);
- printf("\n");
- }
- void* ucitavanjeClanova(const char* const imeDatoteke) {
- FILE* pF = fopen(imeDatoteke, "ab+");
- if (pF == NULL) { return NULL; }
- fread(&brojClanova, sizeof(int), 1, pF);
- CLAN* poljeClanova = (CLAN*)calloc(brojClanova, sizeof(CLAN));
- if (poljeClanova == NULL) { return NULL; }
- fread(poljeClanova, sizeof(CLAN), brojClanova, pF);
- return poljeClanova;
- printf("\n");
- }
- void ispisivanjeClanova(const CLAN* const poljeClanova) {
- if (poljeClanova == NULL) { return; }
- int i;
- for (i = 0; i < brojClanova; i++) {
- printf("Clan broj %d ID: %d ime: %s prezime: %s adresa: %s broj mobitela: %d broj posudenih filmova: %d\n",
- i + 1,
- (poljeClanova + i)->id,
- (poljeClanova + i)->ime,
- (poljeClanova + i)->prezime,
- (poljeClanova + i)->adresa,
- (poljeClanova + i)->brMob,
- (poljeClanova + i)->brFilm);
- }
- printf("\n");
- }
- void* pretrazivanjeClanova(CLAN* const poljeClanova) {
- if (poljeClanova == NULL) { return NULL; }
- int i, b, priv = 0;
- printf("Unesite id\n");
- scanf("%d", &b);
- for (i = 0; i < brojClanova; i++) {
- if (b == (poljeClanova + i)->id) {
- printf("Clan pronaden!\n");
- printf("Clan broj %d\tID: %d\time: %s\tprezime: %s\tadresa: %s\tbroj mobitela: %d\tbroj posudenih filmova: %d\n\n",
- i + 1,
- (poljeClanova + i)->id,
- (poljeClanova + i)->ime,
- (poljeClanova + i)->prezime,
- (poljeClanova + i)->adresa,
- (poljeClanova + i)->brMob,
- (poljeClanova + i)->brFilm);
- return(poljeClanova + 1);
- }
- else priv = 1;
- }
- if (priv == 1) { printf("Clan ne postoji!\n"); }
- printf("\n");
- }
- int izlazIzPrograma(CLAN* poljeClanova) {
- char ime[3] = { '\0' };
- printf("Jeste li sigurni da zelite zavrsiti program?\n");
- scanf("%2s", ime);
- if (!strcmp("da", ime)) {
- free(poljeClanova);
- return 0;
- }
- return 1;
- }
- //////// HEADER
- #pragma once
- typedef struct {
- int id;
- char ime[20];
- char prezime[20];
- char adresa[50];
- int brMob;
- int brFilm;
- }CLAN;
- void kreiranjeDatoteke(const char* const imeDatoteke);
- int izbornik(const char* const imeDatoteke);
- void dodavanjeClanova(const char* const imeDatoteke);
- void* ucitavanjeClanova(const char* const imeDatoteke);
- void ispisivanjeClanova(const CLAN* const poljeClanova);
- void* pretrazivanjeClanova(CLAN* const poljeClanova);
- int izlazIzPrograma(CLAN* poljeClanova);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement