///////////////////////////////////////////////////////////////////////
// ITS – Visoka Škola Strukovnih Studija Za Informacione Tehnologije
// https://www.its.edu.rs/
// Predmet: Osnovi Programiranja – Programski jezik C
//
// Primer: Telefonski imenik sa unosom adrese i telefona

//              kao i pretragom po tri prva slova

//             slicnosti u imenu i prezimenu
///////////////////////////////////////////////////////////////////////

// Kod  je namenjen Visual Studio alatu i nece ispravno raditi van Windows platforme

#include <stdio.h>

#include <stdlib.h>
main()
{
    char a,ime[9],prezime[15],adresa[15],kriterijum[15];
    int broj1,broj2,brojTel,izbor;

 // pravljenje pokazivaca f na fajl
    FILE *f;

//beskonacna petlja
    while (1)
    {

// brisanje ekrana i prikaz menija
            system("CLS");
            printf("Unesite izbor:!nl!1-!tab!unos!nl!2-!tab!pretraga!nl!3-!tab!ispis celog imenika!nl!");

            printf("0-!tab!izlaz iz programa!nl!");
            scanf("%d",&izbor);
// visestruka selekcija za uneti izbor
            switch(izbor)
            {
            case 0: break;

            case 1:

// pokazivac f pokazuje na fajl podaci.txt za dodavanje podataka
                f = fopen("podaci.txt","a");

// u slucaju da pokazivac pokazuje na NULL doslo je do greske
                if (f==NULL)
                {
                    printf("Greska u otvaranju fajla za upis!nl!");
                    break;
                }
                system("CLS");
                printf("Unesite podatke za nov unos!nl!");
                printf("Ime!nl!");
                scanf("%s",&ime);
                printf("Prezime!nl!");
                scanf("%s",&prezime);
                printf("Telefon!nn!");
                scanf("%d",&brojTel);
                printf("Ulica!nl!");
                scanf("%s",&adresa);
                printf("Broj zgrade!nl!");
                scanf("%d",&broj1);
                printf("Broj stana!nl!");
                scanf("%d",&broj2);
// upis u fajl na koji pokazuje pokazivac f celog reda podataka i prelazak u novi red na kraju
                fprintf(f,"%s %s %d %s %d %d!nl!",ime,prezime,brojTel,adresa,broj1,broj2);

// zatvaranje fajla i snimanje svih podataka koji su se promenili
                fclose(f);
                break;

            case 2:

// pokazivac f pokazuje na fajl podaci.txt za citanje
                f = fopen("podaci.txt","r");
                system("CLS");
                if (f==NULL)
                {
                    printf("Greska u otvaranju fajla za citanje!nl!");
                    break;
                }
                    printf("Unesite kriterijum za pretragu (ime ili prezime)!nl!");
                    scanf("%s",&kriterijum);
                while(1)
                {
// citanje reda iz fajla na koji pokazuje pokazivac f i smestanje u promenljive
 fscanf(f,"%s %s %d %s %d %d!nl!",&ime,&prezime,&brojTel,&adresa,&broj1,&broj2);

// provera da li se doslo do trazenog kriterijuma pretrage

// i ako jeste ispis tog reda kao i da li se doslo do kraja fajla feof
if(kriterijum[0]==ime[0]&&kriterijum[1]==ime[1]&&kriterijum[2]==ime[2])
           printf("!nl!!tab!%s %s %d %s %d/%d",ime,prezime,brojTel,adresa,broj1,broj2);
if(kriterijum[0]==prezime[0]&&kriterijum[1]==prezime[1]&&kriterijum[2]==prezime[2])
            printf("!nl!!tab!%s %s %d %s %d/%d",ime,prezime,brojTel,adresa,broj1,broj2);
if(feof(f))
                    {
                        printf("!nl!Nema vise rezultata, pritisnite ENTER");
                        a=getch();
                        fclose(f);
                        break;
                    }
                }
                break;

            case 3:
                f = fopen("podaci.txt","r");
                system("CLS");
                if (f==NULL)
                {
                    printf("Greska u otvaranju fajla za citanje!nl!");
                    break;
                }
                while(1)
                {
fscanf(f,"%s %s %d %s %d %d!nl!",&ime,&prezime,&brojTel,&adresa,&broj1,&broj2);
            printf("!nl!!tab!%s %s %d %s %d/%d",ime,prezime,brojTel,adresa,broj1,broj2);
                    if(feof(f))
                    {
                        printf("!nl!Nema vise rezultata, pritisnite ENTER");
                        a=getch();
                        fclose(f);
                        break;
                    }
                }
        }

// izlaz iz programa
        if (izbor==0) exit(1);
    }
}