Skip to content

Instantly share code, notes, and snippets.

@emirozturk
Last active Jan 25, 2019
Embed
What would you like to do?
Veri Yapıları 2. Hafta Uygulaması 2016
#include <stdio.h>
struct ip
{
unsigned char p1,p2,p3,p4;
}typedef Ip;
struct bilgi
{
Ip ip;
int sure;
char silindiMi;
}typedef Bilgi;
Bilgi *dizi;
int diziSayaci = 0;
int dosyaBoyutuVer(FILE *fp)
{
fseek(fp,0,SEEK_END);
int boyut = ftell(fp);
fseek(fp,0,SEEK_SET);
return boyut;
}
void dosyadanOku()
{
FILE *fp= fopen("dosya.txt","r");
if(fp)
{
int dosyaBoyutu = dosyaBoyutuVer(fp);
int kayitBoyutu = sizeof(Bilgi);
int kayitSayisi = dosyaBoyutu/kayitBoyutu;
diziSayaci = kayitSayisi;
dizi = (Bilgi *)calloc(1,(kayitSayisi+100)*kayitBoyutu);
fread(dizi,kayitBoyutu,kayitSayisi,fp);
}
else
dizi = (Bilgi *)calloc(100,sizeof(Bilgi));
fclose(fp);
}
void dosyayaYaz()
{
FILE *fp = fopen("dosya.txt","w");
fwrite(dizi,sizeof(Bilgi),diziSayaci,fp);
fclose(fp);
}
void ekle()
{
printf("IP'yi giriniz:");
scanf("%d.%d.%d.%d",&dizi[diziSayaci].ip.p1,&dizi[diziSayaci].ip.p2,&dizi[diziSayaci].ip.p3,&dizi[diziSayaci].ip.p4);
printf("Sure giriniz (ms):");
scanf("%d",&dizi[diziSayaci].sure);
diziSayaci++;
}
void mSil()
{
int indis = ara();
if(indis != -1)
dizi[indis].silindiMi = 1;
}
void fSil()
{
int indis = ara();
if(indis != -1)
{
for(int i=indis;i<diziSayaci-1;i++)
dizi[i]=dizi[i+1];
diziSayaci--;
}
}
int ara()
{
Bilgi b;
printf("IP'yi giriniz:");
scanf("%d.%d.%d.%d",&b.ip.p1,&b.ip.p2,&b.ip.p3,&b.ip.p4);
for(int i=0;i<diziSayaci;i++)
if(b.ip.p1 == dizi[i].ip.p1 &&
b.ip.p2 == dizi[i].ip.p2 &&
b.ip.p3 == dizi[i].ip.p3 &&
b.ip.p4 == dizi[i].ip.p4 &&
dizi[i].silindiMi == 0)
return i;
return -1;
}
void listele()
{
for(int i=0;i<diziSayaci;i++)
if(!dizi[i].silindiMi)
printf("%d.%d.%d.%d - %d\n",dizi[i].ip.p1,dizi[i].ip.p2,dizi[i].ip.p3,dizi[i].ip.p4,dizi[i].sure);
}
void menu()
{
int secim=0;
do
{
for(int i=0;i<10;i++)printf("\n");
listele();
printf("1.Ekle\n");
printf("2.Mantiksal Sil\n");
printf("3.Fiziksel Sil\n");
printf("4.Ara\n");
printf("5.Cikis\n");
printf("Secim:");scanf("%d",&secim);
if(secim == 1)ekle();
if(secim == 2)mSil();
if(secim == 3)fSil();
if(secim == 4)ara();
}while(secim!=5);
}
int main(int argc, const char * argv[])
{
dosyadanOku();
menu();
dosyayaYaz();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment