///////////////////////////////////////////////////////////////////////
// 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);
}
}