Çanakkale Onsekiz Mart Üniversitesi Bilgisayar Mühendisliği Bölümü yapısal programlama(C) ders notlarım.
#include <stdio.h>
#include <stdlib.h>
struct Personel
{
int perno;
int ad[15];
int soyad[20];
};
int main()
{
struct Personel kayit;
FILE *dosya;
//binart bir dosya sonuna eklenecek sekilde aciliyor : ab
dosya = fopen("personel.bin","ab"); // a olmassa sonuna yazmaz siler yeni açar b olmazsa komple struct içindekileri bir kerette yazıp bir kerette okuyamazdık
int secim = 1;
while(secim != 0)
{
printf("Personel no : "); scanf("%d", &kayit.perno);
printf("Ad : "); scanf("%s", kayit.ad);
printf("Soyad : "); scanf("%s", kayit.soyad);
fwrite(&kayit, sizeof(kayit),1,dosya);
printf("\nDevam (H=0/E=1)\n");
scanf("%d",&secim);
if(secim==0)
break;
}
fclose(dosya);
//sadece okuma yapacağımız için r olduğu için sadece okuma modunda açılır b olduğu için binary olarak açılır
if((dosya = fopen("personel.bin", "rb"))==NULL) //eğer dosyayı açtıysa 1 değeri döndürür açamadıysa null döndürür
printf("Dosya acma hatasi!!!");
while(1)
{
fread(&kayit, sizeof(kayit),1,dosya); // adres , kayit kadar oku , 1 kayıt oku , dosyadan oku
if(feof(dosya)) break; //kayitlar bitene kadar okuması için
printf("%5d %-15s %-20s\n", kayit.perno,kayit.ad,kayit.soyad);
}
fclose(dosya);
int x;
printf("\n Personel no girin : ");
scanf("%d",&x);
//Sadece okuma modunda binary dosya acma : rb
dosya = fopen("personel.bin","rb");
if(dosya==NULL)
{
printf("\n Dosya acma hatasi!!!");
return 0;
}
fseek(dosya,(x-1)*sizeof(kayit),SEEK_SET); //dosya üzerinde atlama ve rasgele erişim için kullanıyoruz //SEEK SET EN BAŞTAN BAŞLAYARAK OKUYOR
if(fread(&kayit,sizeof(kayit),1,dosya)==1)
{
printf("\n Kayitli Personel adi = ");
printf("%s\n",kayit.ad);
}
fclose(dosya);
return 0;
}
---------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
struct Personel
{
int perno;
int ad[15];
int soyad[20];
};
int main()
{
struct Personel kayit;
FILE *dosya1;
FILE *dosya2;
dosya1 = fopen("personel1.bin","ab");
dosya2 = fopen("personel2.bin","ab");
int secim = 1;
int i;
int sira = 1;
for(i=1;i<=100;i=i+2)
{
if(sira == 1)
{
kayit.perno = i ;
printf("Ad : "); scanf("%s", kayit.ad);
printf("Soyad : "); scanf("%s", kayit.soyad);
fwrite(&kayit, sizeof(kayit),1,dosya1);
printf("\nDevam (H=0/E=1)\n");
scanf("%d",&secim);
sira = 2;
if(secim==0)
break;
}
else if(sira ==2)
{
kayit.perno = i+1;
printf("Ad : "); scanf("%s", kayit.ad);
printf("Soyad : "); scanf("%s", kayit.soyad);
fwrite(&kayit, sizeof(kayit),1,dosya2);
printf("\nDevam (H=0/E=1)\n");
scanf("%d",&secim);
sira = 1;
if(secim==0)
break;
}
}
fclose(dosya1);
fclose(dosya2);
if((dosya1 = fopen("personel1.bin", "rb"))==NULL)
printf("Dosya acma hatasi!!!");
if((dosya2 = fopen("personel2.bin", "rb"))==NULL)
printf("Dosya acma hatasi!!!");
int x;
printf("\n Personel no girin : ");
scanf("%d",&x);
if(x%2==0)
{
fseek(dosya2,((x/2)-1)*sizeof(kayit),SEEK_SET);
if(fread(&kayit,sizeof(kayit),1,dosya2)==1)
{
printf("\n Kayitli Personel adi = ");
printf("%s\n",kayit.ad);
}
}
else
{
fseek(dosya1,(x/2)*sizeof(kayit),SEEK_SET);
if(fread(&kayit,sizeof(kayit),1,dosya1)==1)
{
printf("\n Kayitli Personel adi = ");
printf("%s\n",kayit.ad);
}
}
fclose(dosya1);
fclose(dosya2);
return 0;
}
No comments:
Post a Comment