Antona11
Početnik
- Poruka
- 1
C:
#include <stdio.h>
#include<stdlib.h>
#include <string.h>
typedef struct {
char ime[50];
char telefon[20];
}Kontakt;
Kontakt *p; //pokazivac na strukturu, globalni
FILE *datoteka; //pokazivac na fajl, globalni
void upisUImenik(){
//funkciji treba struktura (*p) i fajl(*datoteka) da odradi posao, a posto su deklarisani pre, vidi ih kao svoje - zato je prazno ()
int kraj=0;
char operacija;
datoteka=fopen("imenik.txt","w");
p = (Kontakt*)malloc(sizeof (Kontakt));
while(kraj==0){
printf("Da li zelite da nastavite sa unosom ? ('D' ili 'N')\n");
fflush(stdin);
scanf("%c", &operacija);
if(operacija=='N' || operacija=='n'){
kraj=1;
break;
}
fflush(stdin);
printf("Unesite ime kontakta:\n"); //radi jednostavnijeg citanja kasnije iz fajla, unosite samo ime bez belog znaka
fflush (stdin);
gets (p->ime);
printf("Unesite telefon:\n");
gets (p->telefon);
fprintf(datoteka,"%s\t%s\n",p->ime, p->telefon);
}
fclose (datoteka);
free (p);
}
void dodajUImenik(){
int kraj=0;
char operacija;
datoteka=fopen("imenik.txt","a");
p = (Kontakt*)malloc(sizeof (Kontakt));
while(kraj==0){
printf("Da li zelite da nastavite sa unosom ? ('D' ili 'N')\n");
fflush(stdin);
scanf("%c", &operacija);
if(operacija=='N' || operacija=='n'){
kraj=1;
break;
}
fflush(stdin);
printf("Unesite ime kontakta:\n");
fflush (stdin);
gets (p->ime);
printf("Unesite telefon:\n");
gets (p->telefon);
fprintf(datoteka,"%s\t\t%s\n",p->ime, p->telefon);
}
fclose (datoteka);
free (p);
}
void CitanjeImenika(){
int broj;
p = (Kontakt*)malloc(sizeof (Kontakt));
printf("Sadrzaj imenika: \n");
datoteka=fopen("imenik.txt","r");
if(datoteka==NULL){
printf("Dogodila se greska prilikom otvaranja datoteke za citanje!\n");
return;
}
printf ("ime\t\t\ttelefon\n");
while(fscanf(datoteka,"%s%s",p->ime, p->telefon)!=EOF){ //citas dok ima sta
printf("%-20s\t%s\n", p->ime, p->telefon);
}
fclose(datoteka);
free(p);
}
void unesiPrvoSlovoZaKineza(){
int broj, ima =0;
char name;
p = (Kontakt*)malloc(sizeof (Kontakt));
datoteka=fopen("imenik.txt","r");
if(datoteka==NULL){
printf("Dogodila se greska prilikom otvaranja datoteke za citanje!\n");
return;
}
printf ("\nUnesite prvo slovo kontakta\n");
fflush (stdin);
scanf("%c", &name);
printf("\nPrikaz kontakta \n");
while(fscanf(datoteka,"%s%s",p->ime, p->telefon)!=EOF){ //citas dok ima sta
if (p->ime[0]==toupper(name)|| p->ime[0] == tolower(name)){
printf("\n%s\t\t\t%s\n", p->ime, p->telefon); //moze se pretrazivati bilo koji deo, vi napravite razne varijante
ima =1;
//naprimer, samo po prvom slovu i sl
} //ide do kraja imenika, ali signalizira ako je nesto nasao
}
if (ima ==0)
printf ("\nNepostojeci kontakt!\n");
fclose(datoteka);
free(p);
}
void PotraziKontakt(){
int broj, ima =0;
char name[20];
p = (Kontakt*)malloc(sizeof (Kontakt));
datoteka=fopen("imenik.txt","r");
if(datoteka==NULL){
printf("Dogodila se greska prilikom otvaranja datoteke za citanje!\n");
return;
}
printf ("\nUnesite deo imena kontakta\n");
fflush (stdin);
gets(name);
printf("\nPrikaz kontakta \n");
while(fscanf(datoteka,"%s%s",p->ime, p->telefon)!=EOF){ //citas dok ima sta
if (strstr(p->ime, name)!=0){
printf("\n%s\t\t\t%s\n", p->ime, p->telefon); //moze se pretrazivati bilo koji deo, vi napravite razne varijante
ima =1;
//naprimer, samo po prvom slovu i sl
} //ide do kraja imenika, ali signalizira ako je nesto nasao
}
if (ima ==0)
printf ("\nNepostojeci kontakt!\n");
fclose(datoteka);
free(p);
}
int main(){
char operacija;
while (1){
printf ("\n\t\t***Moj imenik***\n\n");
printf ("\nIzaberite nacin rada:\n");
printf ("\n1. kreiranje imenika\n2. Listanje imenika\n 3. Pretraga kontakta\n4. Dodaj kontakt\n5. Trazi prvo slovo\n 6.Menjanje podataka\nBilo sta - kraj\n");
printf ("\nIzaberite opciju:\n");
fflush (stdin);
operacija = getchar();
switch(operacija){
case '1':
upisUImenik();
system ("pause");
system ("cls");
break;
case '2':
CitanjeImenika();
system ("pause");
system ("cls");
break;
case '3':
PotraziKontakt();
system ("pause");
system ("cls");
break;
case '4':
dodajUImenik();
system ("pause");
system ("cls");
break;
case '5': unesiPrvoSlovoZaKineza();
system ("pause");
system ("cls");
break;
default: printf ("\n\t***Kraj***\n");
exit (1);
break;
}
}
return 0;
}
Poslednja izmena od moderatora: