Član
Član od: 6.2.2012.
Poruke: 151
Zahvalnice: 87
Zahvaljeno 60 puta na 40 poruka
|
Re: Seminarski iz C-a
Citat:
cane.prebranac kaže:
Za pocetak ovo ti je visak, tj treba da se prepravi.
Kod:
if ((fptr=fopen("adresar.bin","rb+"))==NULL)
greska(GRESKA1_DAT);
|
Ne kontam zasto? U proslom kodu mi je to savrseno radilo.
Malo sam izmenio kod, sada mi sve radi do kraja, osim toga sto program nece da kreira datoteku, morao sam sam da je kreiram.
Kod:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX 256
typedef enum{GRESKA1_DAT,GRESKA2_DAT,GRESKA_POZ} Greska;
char *poruke_o_greskama[]={
"\nGreska pri otvaranju datoteke za upis!\n",
"\nGreska pri otvaranju datoteke za prikaz!\n",
"\nGreska pri pozicioniranju u datoteci", };
FILE *fptr;
typedef struct adresar{
char ime[MAX+1],prezime[MAX+1],br_telefona[MAX+1],mail_adresa[MAX+1];
}Adresar;
Adresar a1;
void unos(void);
void izmene(void);
void prikaz(void);
void greska(Greska status);
void izmena_br_telefona(void);
void izmena_mail_adrese(void);
void obrisi_podatke(void);
int main ()
{
int opcija,izlaz=0;
do
{
printf ("\n\n1.Unos\n2.Izmena\n3.Prikaz\n4.Izlaz\n5.Obrisi podatke");
printf ("\nIzabrati opciju\n");
scanf ("%d",&opcija);
switch(opcija)
{
case 1:
unos();
break;
case 2:
izmene();
break;
case 3:
prikaz();
break;
case 5:
obrisi_podatke();
break;
default:
izlaz=1;
break;
}
}while(!izlaz);
return 0;
}
void unos(void)
{ Adresar x;
int ima=0,ima1=0;
if ((fptr=fopen("adresar.bin","rb+"))==NULL)
greska(GRESKA1_DAT);
printf ("\nUnesite podatke\n");
printf ("\nUnesite ime: \n");
fflush(stdin);
gets(a1.ime);
printf ("\nUnesite prezime: \n");
fflush(stdin);
gets(a1.prezime);
printf ("\nUnesite broj telefona: \n");
fflush(stdin);
gets(a1.br_telefona);
printf ("\nUnesite mail adresu: \n");
fflush(stdin);
gets(a1.mail_adresa);
while(fread(&x,sizeof(Adresar),1,fptr)!=0)
{
if (strcmp(x.br_telefona,a1.br_telefona)==0)
{
printf ("\nUneti broj telefona vec postoji!\n");
ima=1;
break;
}
}
if(ima==0)
{
fwrite(&a1,sizeof(Adresar),1,fptr);
}
fclose(fptr);
fptr=fopen("adresar.bin","rb+");
while(fread(&x,sizeof(Adresar),1,fptr)!=0)
{
if (strcmp(x.mail_adresa,a1.mail_adresa)==0)
printf ("\nUneta mail adresa vec postoji!\n");
ima1=1;
break;
}
if(ima1==0)
{
fwrite(&a1,sizeof(Adresar),1,fptr);
}
fclose(fptr);
}
void prikaz(void)
{
int i=1;
if((fptr=fopen("adresar.bin","rb"))==NULL)
greska(GRESKA2_DAT);
while((fread(&a1,sizeof(Adresar),1,fptr))!=0)
{
printf ("\n%d. Ime :\t\t%s\n Prezime :\t\t%s\n Broj telefona:\t%s\n Mail adresa:\t\t%s\n ",i++,a1.ime,a1.prezime,a1.br_telefona,a1.mail_adresa);
}
fclose(fptr);
}
void greska(Greska status)
{
fprintf(stderr,poruke_o_greskama[status]);
exit(1);
}
void izmene(void)
{
int opcija;
printf ("\n1.Izmeni broj telefona? \n2.Izmeni mail adresu? \n");
scanf ("%d",&opcija);
switch(opcija)
{
case 1:
izmena_br_telefona();
break;
case 2:
izmena_mail_adrese();
break;
default:
break;
}
}
void obrisi_podatke(void)
{
char x;
printf ("\nJeste li sigurni? D/N?\n");
fflush(stdin);
x=getchar();
if (x=='D'||x=='d')
{if((fptr=fopen("adresar.bin","wb"))==NULL)
greska(GRESKA2_DAT);
fclose(fptr);
printf ("\nObrisali ste sve podatke\n");}
}
void izmena_br_telefona(void)
{
char br_telefona[MAX];
Adresar s;
if ((fptr=fopen("adresar.bin","rb+"))==NULL)
greska(GRESKA1_DAT);
printf ("\nZa izmenu broja telefona unesite broj telefona koji hocete da izmenite: \n");
fflush(stdin);
gets(br_telefona);
while (1)
{
if(fread(&s,sizeof(Adresar),1,fptr)==0)
break;
if (strcmp(s.br_telefona,br_telefona)==0)
{
printf ("\nUnesite broj telefona: \n");
fflush(stdin);
gets(s.br_telefona);
fseek(fptr,-sizeof(Adresar),SEEK_CUR);
fwrite(&s,sizeof(Adresar),1,fptr);
break;
}
}
fclose(fptr);
}
void izmena_mail_adrese(void)
{
char mail_adresa[MAX];
Adresar k;
if ((fptr=fopen("adresar.bin","rb+"))==NULL)
greska(GRESKA1_DAT);
printf ("\nZa izmenu mail adrese unesite mail adresu koju hocete da izmenite: \n");
fflush(stdin);
gets(mail_adresa);
while(1)
{
if (fread(&k,sizeof(Adresar),1,fptr)==0)
break;
if (strcmp(k.mail_adresa,mail_adresa)==0)
{
printf ("\nUnesite mail adresu: \n");
fflush(stdin);
gets(k.mail_adresa);
fseek(fptr,-sizeof(Adresar),SEEK_CUR);
fwrite(&k,sizeof(Adresar),1,fptr);
break;
}
}
fclose(fptr);
}
|