İçeriği Paylaş:

Rastgele Erişimli Dosyalar

Rastgele Erişimli DosyalarRandom dosyalarda istenilen kayda doğrudan ulaşılır. Ramdom dosyalarda veriler , sabit uzunluktaki bloklar(kayıtlar) şeklinde saklanırlar. Aynı zamanda veriler karakter dizileri şeklinde de saklanırlar. Rastgele erişimli dosylarda, değişkenlerin içeriği bellekte saklanış biçimiyle kütüğe(dosya) yazıldığı için okuma / yazma işlemleri text dosyalara göre daha hızlıdır. Bu nednele veriler dosyada daha az yer kaplar.Random dosyalarda bilgiler sabit uzunlukta saklandığı için değişiklik anında kayıt bozulması yoktur. Ayrıca gerçel sayılarda hassasiyet kaybı da yaşanmaz.Dosyaların içindeki herhangi bir veriye ulaşmak için kayıt alanının dosyanın başlangıcına olan uzaklığını hesaplamak gerekir. Bu hesaplamanın yapılabilmesi için, dosyanın kayıt alanlarının uzunluğunu sabit tutmak gerekir. Dosyanın kayıt alanları sabit ise, bu sabit değer ile herhangi bir kaydın numarasının çarpımı, bu kaydın dosya içindeki yerini belirler. Kayıt GirişiDosyalara kayıt girme işlemi, fwrite fonksiyonu ile gerçekleştirilmektedir. Dosya açıldıktan sonra fseek ile kayıt konumu ayarlandıktan sonra fwrite komutu ile dosyaya yazma işi yapılır.fwrite ( bellek_isaretcisi, veri_boyutu, veri_adedi, dosya_isaretcisi);Ekran AlıntısıKayıt ListelemeDosyalardan  veri  okuma  işlemi  fread  fonksiyonu  ile gerçekleştirilmektedir. Bunun için dosya açıldıktan sonra fseek    komutu ile  okunacak  verinin  başlangıç  adresine  gidilir  ve  daha  sonra  fread fonksiyonu ile okuma yapılır.fwrite ( bellek_isaretcisi, veri_boyutu, veri_adedi, dosya_isaretcisi); Ekran AlıntısıKayıt AramaArama işlemi için öncelikle fseek komutu ile dosyanın başına gidilir. Ardından fread fonksiyonu ile veriler okunduktan sonra seçilen anahtar alan ya da alanlara göre karşılaştırma yapılarak arama işlemi gerçekleştirilir. Kayıt SilmeKayıt silme işlemi için öncelikle silinecek veri aranılır.  Bulunduktan sonra ʹ*ʹ ile aktif olduğu belirtilen kayıt alanı ʹ‐ʹ ile tekrar güncellenerek listeleme işleminde görünmeyecek hale getirilmiş olur. Aynı zamanda eski verilerin saklanması da sağlanmış olur.Kayıt DüzeltmeKayıt düzeltme işlemi kayıt arama ve silme işlemi gibidir. Farklı olarak güncellenecek alanlar aktifliği gösteren parametre dışında kalan bilgilerdir.Dosya işlemlerinde kullanılan bazı fonksiyonlar;Ekran AlıntısıÖrnek: Dosyaya kayit girisi ve listeleme#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <io.h> struct ogrenci{char k;char num[10]; char adsoyad[30]; char tel[16];} ogrkay; FILE *dosya;int i, kaysay, say; long kayit_yer; char cev,c;int ksay(void){return ((filelength(fileno(dosya))/sizeof(struct ogrenci)));}void kayit_ekle(void){dosya = fopen(“ogrenci.dat”,”r+b”);if (dosya == NULL)dosya = fopen(“ogrenci.dat”,”w+b”);system(“cls”);fflush(stdin);printf(“Numara…..:”);gets(ogrkay.num);printf(“Ad Soyad ..:”);gets(ogrkay.adsoyad); printf(“Tel……..:”);gets(ogrkay.tel);printf(“Girilen Bilgiler Dogru mu? [E/H]”);cev=getche();if(cev==’E’ || cev==’e’){ogrkay.k=’*’; fseek(dosya,filelength(fileno(dosya)),SEEK_SET); fwrite(&ogrkay,sizeof(struct ogrenci),1,dosya);}fclose(dosya);}void baslik(void){system(“cls”);if(dosya==NULL) printf(“Dosya acilamadi”);printf(“%-10s %-30s %-16s “,”NUMARA”,”AD SOYAD”, “TELEFON”);say=0;}void listele(void){dosya = fopen(“ogrenci.dat”,”rb”); baslik();kaysay=ksay();fseek(dosya,0,SEEK_SET);for(int i=0; i<kaysay; i++){fseek(dosya,(i*sizeof(struct ogrenci)),SEEK_SET); fread(&ogrkay,sizeof(struct ogrenci),1,dosya);if(ogrkay.k==’*’){say++;printf(“%-10s”,ogrkay.num); printf(“%-30s”,ogrkay.adsoyad); printf(“%-16s”,ogrkay.tel); if(say==20){printf(“Diger sayfaya gecmek icin bir tusa basiniz”); getch();baslik();}}}printf(“Toplam Kayit Sayisi= %d”,kaysay);printf(“Listelenecek kayitlar bitti…”);fclose(dosya);getch();}int main(){do{system(“cls”);printf(“1-Bilgi girisi 2-Bilgi Listeleme 3-Cikis Secim:”); if(c==’1′) kayit_ekle();if(c==’2′) listele();if(c==’3′) exit(0);c=getche();}while(c!=’3′);getch();return 0;}

İçeriği Paylaş:
İlginizi Çekebilir
Yorum Yapılmamış

Henüz Hiç Yorum Yapılmadı..

Yorum Yaz

Rastgele Erişimli Dosyalar

Programlama 2

30/07/2016 | Yorum Yok | 111 | kucukakarsu