PROGRAMLAMA. Dosyalama İşlemleri. Yrd. Doç. Dr. Bülent Çobanoğlu. Sakarya Üniversitesi Mekatronik Mühendisliği. Yrd.Doç.Dr.



Benzer belgeler
DOSYA İŞLEMLERİ Programlama dilleri hafta -

Temel Dosya İşlemleri. Kütük Organizasyonu 1

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar:

BMB1002 Bilgisayar Programlamaya Giriş. Dosyalar. Prof. Dr. Necmettin Kaya

Temel Bilgisayar Programlama

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Yrd. Doç. Dr. Caner ÖZCAN

Eln 1002 Bilgisayar Programlama II

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA

ALGORİTMA VE PROGRAMLAMA II

C Dosyalama. Öğr. Gör. M. Ozan AKI. Rev 1.0

Genel Programlama II

ALGORİTMA VE PROGRAMLAMA II

10. DOSYA GİRİŞ ÇIKIŞ FONKSİYONLARI

şeklinde tanımlanmıştır. O halde, dosyaları daha önceki bilgilerimizi kullanarak FILE *Dosya1, *Dosya2;

Yrd. Doç. Dr. Caner ÖZCAN

Metin Dosyaları. Metin Dosyaları Dosya Açma ve Kapama Dosya Okuma ve Yazma Rastgele Erişim Standart Girdi/Çıktı Hata Kontrolü

DOSYALAR. Temel terimler Hafta. Dr. Fahri Vatansever

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

12. Saat : Dosyalar I (Files)

BÖLÜM 12: DOSYA İŞLEMLERİ

Dosyalar 1.1 Dosya Nedir?

Pascalda oluşturulacak dosyalar değişkenler gibi programın başında tanımlanır.

Visual Basic 6.0. Anadolu Üniversitesi Endüstri Mühendisliği Bölümü. Dosyalama İşlemleri. Ders Notları

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Sınav tarihi : Süre : 60 dak.

İSMET AKTAR ANADOLU TEKNİK LİSESİ BİLİŞİM TEKNOLOJİLERİ ALANI WEB PROGRAMCILIĞI DALI

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

Hafta 12 Karakter Tutan Diziler

Eln 1001 Bilgisayar Programlama I

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

ALGORİTMA VE PROGRAMLAMA II

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin);

C/C++ Disk G/Ç İşlemleri. Yrd. Doç. Dr. Fehim KÖYLÜ Erciyes Üniversitesi Bilgisayar Mühendisliği Bölümü

Diziler (Arrays) Çok Boyutlu Diziler

Chapter 11 Dosya İşleme

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Strings(Karakter Dizisi)

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr)

Verileri Sıralı ve Random Erişimli Dosyalamak

BİL1001 Bilgisayar Bilimlerine Giriş 1

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

ALGORİTMA VE PROGRAMLAMA I

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA

Adı Soyadı Öğrenci No. Toplam (100p) 2 (10p) +10p. 5 (25p) +10p. 3 (20p) 4 (25p) 1 (20p)

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

Fiziksel Veritabanı Modelleme

C Konsol Giriş Çıkış Fonksiyonları

#include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct { int ID; char isim[15]; char soyisim[15];

PROGRAMLAMAYA GİRİŞ DERS 2

Telefon Rehberi Uygulaması

Sıralı bir dosyayı açmak için FileOpen komutundan faydalanılır. Bu komutun genel kullanılış biçimi aşağıdaki gibidir:

Temel Giriş/Çıkış Fonksiyonları

Algoritma ve Programlama: Karar Yapıları ve Döngüler

NB Ekran Seri Port Üzerinden Veri Okuma/Yazma. Genel Bilgi Protokol Oluşturma Veri Okuma Veri Yazma

Fonksiyonlar (Altprogram)

Programlama Dilleri 1. Ders 4: Diziler

BÖLÜM 11: YAPISAL VERİ TİPLERİ

printf("\nbilgilerini goruntulemek istediginiz ogrencinin numarasini girin: "); scanf("%d",&no);

C PROGRAMLAMA D İ L İ

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır

C PROGRAMLAMA D İ L İ

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

void main() { int a[] = {1, 2, 3, 4, 5, 6}; int *p=&a[2]; int **pp=&p; printf("%d", **pp+2); }

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Dersin Sorumlusu: Yrd. Doç. Dr. Birol SOYSAL. Sunumları Hazırlayan: Doç. Dr. Bülent ÇAKMAK

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

Yrd. Doç. Dr. Caner ÖZCAN

STRİNG DİZİLER(KATARLAR)

YAPILAR (STRUCTURES)

BİLGİSAYAR UYGULAMALARI Şırnak Üniversitesi Mühendislik Fakültesi Güz Dönemi Arş.Gör. Eren DEMİR ve Arş.Gör. Veysel KIŞ (

BİLGİSAYAR PROGRAMLAMA Araş. Gör. Ahmet ARDAHANLI. Kafkas Üniversitesi Mühendislik Fakültesi

Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

elemanlı bir dizide bir sinyalin 1 er saniye aralıklarla ölçülen gerilim değerleri tutulmaktadır. Bu sinyalin tepeden tepeye genliğini,

ELN1001 BİLGİSAYAR PROGRAMLAMA I

8. İŞARETCİLER (POINTERS)

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

Fen ve Mühendislik Uygulamalarında MATLAB

KONU 7: DOSYA İŞLEME ( File Processing )

Dr. Fatih AY Tel: fatihay@fatihay.net

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları

Big Endian & Little Endian K.Atilla Toker İzmir Üniversitesi Meslek Yüksek Okulu Bilgisayar Programcılığı Ver:01

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

Bölüm 2 - C ile Programlamaya Giriş

Yrd. Doç. Dr. Caner ÖZCAN

STRING (SÖZEL) İŞLEMLER. Yrd. Doç.Dr. Bülent Çobanoğlu

ALFASAYISAL BİLGİLER KARAKTER DİZİLERİ (STRING)

BİLG Dr. Mustafa T. Babagil 1

C Programlama Dilininin Basit Yapıları

2) /* Kullanıcıdan alınan iki sayının obebini alt fonksiyon yardımı ile hesaplayan C programı*/

Giriş. ENF102 Jeoloji

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

ALGORİTMA VE PROGRAMLAMA II

Transkript:

PROGRAMLAMA Dosyalama İşlemleri Yrd. Doç. Dr. Bülent Çobanoğlu Sakarya Üniversitesi Mekatronik Mühendisliği Yrd.Doç.

Dosyalama İşlemleri Program ve verileri daha sonra kullanabilmek amacı ile kalıcı olarak bilgisayarın disk, disket gibi depolama birimlerinde saklamak gerekir. Bu depolama birimlerinde saklanan veri ve program gruplarına dosya(file) adı verilir. Dosyalar ise kayıtlardan (records) oluşur. Herhangi bir kişi, kurum veya malzeme ile ilgili bilgilerin belirli bir düzen içerisinde bir araya gelerek oluşturduğu yapıya kayıt adı verilir. Kayıtlar ise alanlardan (fields) oluşur. Örneğin bir üniversitedeki öğrenci işlerinde öğrencilerle ilgili bilgiler bir dosyada şu şekilde tutulmaktadır; Öğrencinin Numarası Adı, Soyadı Bölümü Kayıt Tarihi Adresi.. Bir öğrenci ile ilgili bu bilgilerin tamamına kayıt, her bir bilgiye (Numara, adı soyadı, bölüm gibi) ise alan adı verilir. Belirli bir alan (Alan1) aynı tip veri gruplarından oluşmak zorundadır.

Dosyalama İşlemleri Dikkat edilirse bir tablo halindeki verilerin satırları kayıtları, sütunları ise alanları gösterir. Bitlerin (0,1) birleşmesi ile karakter, karakterlerin(veya bytes) birleşmesi ile alan (field), alanların birleşmesi ile kayıtlar (record) oluşur, bir veya daha fazla kayıttan oluşan bütüne dosya (file) ve birbiri ile ilişkili dosyaların oluşturduğu yapıya veritabanı (database) adı verilir.

Dosyalama İşlemleri Programlama dilleri dosya oluşturma, dosya silme, dosyadan bilgi okuma ve dosyaya bilgi ekleme gibi temel işlevler için gerekli komutları içerirler. Programlama dilinde klasik dosyalama yöntemlerini saklama türüne ve kayıtlara erişim türüne göre aşağıdaki gibi sınıflandırılırlar: Saklama türüne göre: İkili (binary) ve metin (text) Kayıtlara erişim türüne göre: Sıralı (sequential) ve Rastgele (random)

Dosya Değişkeni C Programlama dilinde dosya işlemleri yapabilmek için bir dosya değişkeni işaretci (pointer) kullanılarak aşağıdaki gibi tanımlanır. FILE *dosyaadi ; Bilgisayar programı ile işletim sistemi dosyası arasında veri taşıyan bu değişken dosya açma, dosya kapatma, dosyaya veri ekleme ve dosyadan veri okuma işlemlerinde kullanılır.

Dosyalama İşlemleri Dosyalarla ilgili yapılan işlemlerde aşağıdaki adımlar takip edilir; Dosyanın açılması (fopen komutu ile) Dosya ile ilgili işlem yapılması ( kayıt okuma, yazma, düzeltme, silme gibi) Dosyanın kapatılması (fclose komutu ile) Bu işlemleri C\C++ dilinde şöyle ifade ederiz: FILE *dosya; /* dosya göstericisi */ dosya = fopen(const char dosya_adı, const char açma_amacımız);... dosya işlemleri... fclose(dosya); Bir dosyayı kullanmadan önce açmamız gerekir. Dosyayı açarken de genelde açma amacımızı belirtme zorunluluğu vardır. Eğer dosyaya bilgiler yazacak isek dosyayı yazma modunda (write-w), dosyadaki bilgileri okuyacak isek okuma modunda (read-r) açarız. Eğer bir dosyayı her iki amaç için de kullanacak isek okuma-yazma (r+) ya da Ekleme (Append -a) modunda açmak gerekir.

Dosya Açma Modları Not: Binary dosyalamada yukarıdaki dosya açma modlarına b harfi eklenir. rb, wb gibi FILE * dosya = fopen(filename, "r") // Dosya okuma amaçlı açıldı FILE * dosya = fopen(filename, "w") // Dosya yazma amaçlı açıldı FILE * dosya = fopen(filename, "a") // Dosya ekleme amaçlı açıldı

Dosya İşlem Komutları fopen: Dosya açma komutudur. Örnek: dosyam.dat adlı bir dosyayı r (read-okuma) modunda açarak adresini fp isimli değişkende saklar. fp=fopen( dosyam.dat, r ) ; fclose: Dosyayı kapatır. Örnek: fclose(fp); fprintf veya fputs(): Dosyaya veri yazar. Örnek: fputs( Ali",fp); fprintf(fp, Ali"); fscanf veya fgets(): Dosyadan veri okur. Örnek: fgets(str, 12, fp); fscanf(fp, "%s", &str); fgetc : Dosyadan bir karakter okur, Örnek: karakter = fgetc(dosya); fputc :Dosyaya bir karakter yazar, Örnek: fputc(karakter, dosya); Not: Dosya kopyalama işleminde dosya1 in sonuna gelene kadar tüm kayıtları karakter karakter dosya2 ye yazarken bu komutları aşağıdaki gibi kullanabilirsiniz: fputc(fgetc(dosya1), dosya2); feof(dosyaadi): Dosya sonuna gelinip gelinmediğini kontrol eder. Örnek: while (!feof(fp)) fscanf(fp, "%s", &str); // Dosyadan Oku printf(" %s \n, str); // ve Ekrana yaz rename(): Dosya adını değiştirir. rename("eski.txt", "yeni.txt"); remove(): Belirtilen dosyayı siler. remove("eski.txt"); unlink(): Belirtilen dosyayı siler. unlink("eski.txt");

Dosya İşlem Algoritmaları Sıralı Erişimli Bir Dosyaya Kayıt Eklemek: Sıralı erişimli bir dosyaya kayıt eklemek için dosyanın yazma amacı ile açılması (yani çıkış modunda) gerekir. Kayıt ekleme işlemini sıralı adımlar halinde ifade edersek; Dosyaya kayıt ekleme yani dosyaya bilgi yazmak işlemi için; Kayıt eklemek istediğimiz dosya Ekleme a ya da Yazma w modunda açılır(fopen komutu ile) Eklemek istediğimiz kayıtlar fprintf veya fputs komutları kullanılarak dosyaya yazılır Dosya kapatılır (fclose) NOT: Eğer daha önceden oluşturduğumuz bir dosyayı w (Yazma) modunda açarsak önceki kayıtlar silinir. Sıralı Erişimli Bir Dosyadaki Kayıtları Listelemek: Dosyadaki kayıtları listeleme yani dosyadan bilgi okuma işlemi için; Kayıtlarını Listelemek istediğimiz dosya okuma r modunda açılır (fopen ile) fscanf veya fgets komutu ile kayıtlar dosyadan okunur Okunan kayıtlar listelenir, ekranda gösterilir. Dosya kapatılır (fclose).

Dosya İşlem Algoritmaları Sıralı Erişimli Bir Dosyadaki Kayıtları Silmek: Kayıt silme işlemini sıralı adımlar halinde ifade edersek; Kayıt silmek isteğimiz dosya ( Asil dosya) Okuma r modunda açılır. sdosya=fopen("asil.txt", "r"); İkinci bir dosya (Yedek olsun) Yazma w olarak açılır. sdosyasil=fopen("yedek.txt","w"); Silinecek kayda kadar birinci dosyanın kayıtları sırası ile okunarak ikinci dosyaya yazılır. ( Asıl dosya Yedek dosya ) Silinecek dosyadan sonraki kayıtlarda ikinci dosyaya (Yedek dosya) yazılır. Her iki dosyada kapatılır. Birinci dosya silinir ( Asil dosya) //unlink("asil.txt"); İkinci dosyanın adı değiştirilerek birinci dosyanın adı verilir. ( Yedek dosyanın adı Asil olarak değiştirilir. ) // rename("yedek.txt","asil.txt");

Dosya İşlem Algoritmaları Sıralı Erişimli Dosyadaki Herhangi Bir Kaydı Düzeltmek Sıralı Erişimli bir dosyadaki herhangi bir kaydı değiştirmek işlemi de kayıt silme işlemine benzer. Bu işlemi de sıralı adımlar halinde ifade edersek; Kayıt düzeltmek isteğimiz dosya ( Asil dosya) Okuma r modunda açılır. sdosya=fopen("asil.txt", "r"); İkinci bir dosya (Yedek olsun) Yazma w olarak açılır. sdosyasil=fopen("yedek.txt","w"); Değişiklik yapılacak kayda kadar birinci dosyanın kayıtları sırası ile okunarak ikinci dosyaya yazılır. ( Asıl dosya Yedek dosya ) Değişiklik yapılacak kayıt ya da kayıtlar okunur, gerekli değişiklikler yapılır ve ikinci dosyaya (Yedek dosya) yazılır. Varsa sonraki kayıtlarda birinci dosyadan okunup ikinci dosyaya yazılır. ( Asıl dosya Yedek dosya ) Her iki dosyada kapatılır. Birinci dosya silinir ( Asil dosya) İkinci dosyanın adı değiştirilerek birinci dosyanın adı verilir. ( Yedek dosyanın adı Asil olarak değiştirilir. )

İsminizi dosyaya 5 kez yazan program #include <stdio.h> void main() Dosya değişkeni FILE *dosya; char str[100]; int i; dosya = fopen("ad.txt", "w"); for (i=0; i<5; i++) fprintf(dosya, "Bulent\n"); fclose(dosya); Ad.txt dosyasının içeriği Ad.txt dosyası yazma (w) kipinde açıldı. dosya adındaki dosya değişkenine eşlendi. Açma Modu: w write (yazma), r read (okuma), a append (ekleme), w+, r+ ve a+ hem okuma hem yazma, b binary (ikili, diğerleri ile birlikte kullanılır: w+b gibi)

Ad.txt dosyasının içeriğini okuyup ekrana yazan program #include <stdio.h> void main() Dosya değişkeni FILE *dosya; char str[100]; int i; dosya = fopen("ad.txt", "r"); while (!feof(dosya)) fscanf(dosya, "%s", &str); printf("%s\n", str); fclose(dosya); getchar(); Ad.txt dosyası okuma (r) kipinde açıldı. dosya adındaki dosya değişkenine eşlendi. feof();dosya sonuna gelinmediği sürece tüm kayıtları tarar. feof fonksiyonu dosya sonuna gelinince true değer döndürür. Ekran Çıktısı fscanf komutu yerine fgetc fonksiyonu da dosyadan bir karakter (byte) veri okumada aşağıdaki gibi kullanılabilir. printf("%c", fgetc(dosya));

Klavyeden girilenleri alarak dosyaya ekleyen program (C) #include <stdio.h> #include <string.h> void main() FILE *d; char str[100]; d = fopen("metin1.txt", "w"); do gets(str); fprintf(d, "%s\n", str); while (strlen(str)); fclose(d); Bir satır boş bırakılana kadar girilen tüm satırları dosyaya yazar scanf kullanımı boşluk karakterinde sorun çıkardığı için gets kullandık str = "" olduğunda strlen sıfır döndürür. while(0) döngüden çıkış anlamına gelir, strlen komutu için <string.h> kütüphanesinin eklenmesi gerekir.

Dosyadaki verileri başka bir dosyaya kopyalayan program (C) #include <stdio.h> void main() FILE *d1, *d2; char chr; d1 = fopen("metin1.txt", "r"); d2 = fopen("metin2.txt", "w"); while (1) chr = fgetc(d1); if (feof(d1)) break; fputc(chr, d2); fclose(d1); fclose(d2); while (!feof(d1)) fputc(fgetc(d1), d2); Yukarıdaki kullanım d2'ye eof karakterini de yazar. Yani d2 dosyası, d1 dosyasından 1 byte fazla olur.

Rasgele erişimli ve Binary dosyalama komutları fseek:dosyanın okuma yazma kafasını istenilen kaydın üzerine konumlandırır. fseek komutu ile istenilen kayda doğrudan erişim sağlanabilir. Fakat dosyadaki kaydın sıra numarası yerine dosyada kaçıncı bayta konumlanılacağı verilir. 11. kaydın başına konumlanmak için, 10. kaydın sonu olan sizeof(kayit)*10 gibi bir ifade kullanılabilir. Kullanım şekli; fseek(dosya, kayit_pozisyonu, SEEK_SET); (SEEK_SET Dosyanın başından kayit_pozisyonu (kayit uzunluğu) kadar ileriye konumlanır. SEEK_CUR ile bulunulan konumdan itibaren ileriye SEEK_END ile dosya sonundan itibaren ileriye konumlama yapılabilir). C de bir dosyanın belirli bir yerine konumlanmak için fseek, bulunduğumuz yeri öğrenmek için ftell kullanılır: ftell(dosya); Dosyanın neresinde bulunduğumuzu döndürür (kaçıncı bayt) fseek komutu ile dosyada uygun yere konumlandıktan sonra fwrite() komutu ile kayıtlar dosyaya yazılır

Rasgele erişimli ve Binary dosyalama komutları C de bir kayıt deseninin tamamını bir defada dosyaya eklemek için fwrite, dosyadan okumak için ise fread kullanılır: fwrite(&kayit,sizeof(kayit),1,dosya); Eğer dosyaya yazılacak kayıtlar, bir diziden alınıyorsa, dizinin kaç elemanının transfer edileceği, fwrite komutunun 3. parametresi ile belirlenir. Yazma veya Okuma işleminde dizi kullanılmıyorsa veya dizinin sadece bir elemanı yazılacaksa bu değer 1 olmalıdır. fread:kayıtları dosyadan okur. fread(&kayit,sizeof(kayit),1,dosya); fread NULL değer döndürürse kayıt okuyamamış (muhtemelen dosya sonuna gelmiş) demektir.

Kullanıcı Tanımlı Veri Tipleri (Yapı Tanımlama) Temel veri tiplerinin bir isim altında birleştirilmesi ile oluşturulmuş veri yapılarıdır. Genellikle bir kayıt deseni oluşturmak amacıyla kullanılırlar. Örn: telefon rehberi için ad, soyad, telno gibi 3 farklı veri bir araya gelerek bir kayıt oluşturulur. Dosyalama işlemlerinde tanımlamalı veri yapıları ile oluşturulan kayıt desenleri sıkça kullanılır. Örn: telefon rehberi dosyasına veriler ad, soyad ve telno şeklinde ayrı ayrı değil 1 kayıt olarak kaydedilir. Kullanıcı tanımlı bir veri tipi, struct degisken.. kayitadi; ifadeleri arasında aşağıdaki gibi oluşturulur; struct personel long int perno; char adi[15]; char soyadi[20]; char tel[13]; char adres[100]; float maas; kayit; personel kaydının uzunluğu 8 15 20 13 100 4 160 byte

Telefon Rehberi Programı: Rasgele Erişimli Dosya Örneği Örnek. Telefon rehberi programı Kayıt deseni; struct rehber char Ad [15 ]; char Soyad [20 ]; char Telefon [11]; kayit; /* yapı sonu */ Kayıtları; a) rehber.txt isimli dosyaya kaydeden, b) ve bu dosyadaki tüm kayıtları listeleyen program

Telefon Rehberi Programı: Rasgele Erişimli Dosya Örneği 1/3 //Telefon rehberi - rasgele erişimli dosya örneği #include <stdio.h> #include <string.h> #include <conio.h> struct rehber char Ad [15 ]; char Soyad [20 ]; char Telefon [11]; kayit; /* yapı sonu */ //Ana program int main() char ch; do printf(" 1-Kayit Ekle \n"); printf(" 2-Kayit Listle \n"); printf(" 3-Cikis \n"); ch=getche(); FILE *rdosya; //fonksiyon prototipleri void kayitekle(); void kayitlistele(); switch(ch) case '1':kayitEkle();break; case '2':kayitListele();break; case '3':break; while(ch!='3'); getch();

Telefon Rehberi Programı: Rasgele Erişimli Dosya Örneği 2/3 //Kayıt Ekle void kayitekle() int kayitno=0; char cv='e'; rdosya = fopen("rehber.txt", "ab+"); do kayitno++; printf (" Ad giriniz\n"); scanf ("%s", &kayit.ad); printf (" Soyad giriniz\n"); scanf ("%s", &kayit.soyad); printf (" Telefonu giriniz\n"); scanf ("%s", &kayit.telefon); fseek( rdosya, ( kayitno - 1 ) * sizeof(kayit), SEEK_SET ); fwrite(&kayit, sizeof(kayit),1,rdosya); printf ("Devam edecekmisiniz[e/h]\n"); cv=getche(); while(toupper(cv)=='e'); fclose(rdosya);

Telefon Rehberi Programı: Rasgele Erişimli Dosya Örneği 3/3 //Kayıt Listele void kayitlistele() rdosya = fopen("rehber.txt", "rb+"); printf ("---Kayıtlar yaziliyor---\n"); printf ("---===================---\n"); while (!feof(rdosya)) fread( &kayit, sizeof(kayit), 1, rdosya ); printf( "%s %s %s\n", kayit.ad, kayit.soyad, kayit.telefon); fclose(rdosya);

Öğrenci Kayıt Programı: Sıralı Erişimli Dosya Örneği Örnek. Öğrenci Kayıt programı Kayıt deseni; struct rehber char No [10 ]; char Ad [15 ]; char Soyad [20 ]; char Telefon [11]; kayit; /* yapı sonu */ Kayıtları; a) sehber.txt isimli dosyaya kaydeden, b) ve bu dosyadaki tüm kayıtları listeleyen sıralı erişimli dosya örneği

Öğrenci Kayıt Programı: Sıralı Erişimli Dosya Örneği 1/2 #include <stdio.h> #include <string.h> #include <conio.h> struct rehber char No[10]; char Ad [15]; char Soyad [20]; char Telefon [11]; ; /* yapı sonu */ FILE *sdosya; //fonksiyon prototipleri void kayitekle(); void kayitlistele(); //Ana program int main() char ch; do printf("\n 1-Kayit Ekle \n"); printf(" 2-Kayit Listele \n"); printf(" 3-Cikis \n"); printf(" Seciminiz..: "); ch=getche(); switch(ch) case '1':kayitEkle();break; case '2':kayitListele();break; case '3':break; while(ch!='3'); getch(); return 0;

Öğrenci Kayıt Programı: Sıralı Erişimli Dosya Örneği 2/2 //Kayıt Ekle void kayitekle() struct rehber kayit; char cv='e'; sdosya = fopen("sehber.txt", "a"); do printf ("\nno giriniz\n"); scanf ("%s", &kayit.no); printf ("Ad giriniz\n"); scanf ("%s", &kayit.ad); printf ("Soyad giriniz\n"); scanf ("%s", &kayit.soyad); printf ("Telefonu giriniz\n"); scanf ("%s", &kayit.telefon); fprintf(sdosya,"%s\n%s\n%s\n,%s\n",kayit.no,kayit.ad, kayit.soyad, kayit.telefon); printf ("Devam edecekmisiniz[e/h]\n"); cv=getche(); while(toupper(cv)=='e'); fclose(sdosya); //Kayıt Listele void kayitlistele() struct rehber aktifkayit; sdosya = fopen("sehber.txt", "r"); printf ("---Kayıtlar yaziliyor---\n"); printf ("---===================---\n"); while (!feof(sdosya)) fscanf(sdosya,"%s\n%s\n%s\n%s\n",&aktifkayit.no, &aktifkayit.ad, &aktifkayit.soyad, &aktifkayit.telefon) ; // printf ekrana verileri yazar. printf("ogrenci Numarası :%s\n",aktifkayit.no); printf("adi \t:%s\n",aktifkayit.ad); printf("soyadi \t:%s\n",aktifkayit.soyad); printf("telefon \t:%s\n",aktifkayit.telefon); printf("\n*****************************\n"); // döngünün sonu fclose(sdosya);

Çalışma Sorusu? Sıralı erişimli veya Rasgele erişimli dosya örneklerinden birini aşağıdaki işlemleri yapacak şekilde düzenleyiniz: [1] Kayıt Ekle [2] Kayıt Listele [3] Kayıt Ara [4] Kayıt Düzelt [5] Kayıt Sil [6] Çıkış

Çalışma Sorusu? Bu sözlük programını dosyalama kullanarak gerçekleştiriniz? //Örnek : İngilizce Türkçe Sözlük Programı #include <stdio.h> #include <conio.h> #include <string.h> int main() char tr[][20]="kalem","honey", "box", "year", "Cuma"; char en[][20]="pen","bal", "kutu", "yil", "Friday"; char gir[20]; int i; printf ("Kelime giriniz..:"); gets(gir); for (i=0; i<5; i++) if (strcmp(gir,tr[i])==0) //girilen tr dizisinde varsa printf ("%s...: %s",tr[i], en[i]); break; if (strcmp(gir,tr[i])!=0) printf ("\nsozlukte yoktur"); getch(); return 0;

Sıralı Rastgele Erişimli Dosya Karşılaştırması Sıralı Erişimli dosyalarda gereksiz boşluklar oluşmadığı için dosya boyu rastgele erişimli dosyaya göre daha azdır. Fakat herhangi bir kayda erişmek için dosyanın başından itibaren o kayda kadar olan tüm kayıtların okunması gereklidir. Sıralı Erişimli Dosyalarda, bir kayıt içinde yer alan karakter dizileri dosyaya kaydedilirken boşlukları silinerek kaydedilebilir. Rastgele Erişimli Dosyalarda herhangi bir kayda dosyadaki sıra numarası biliniyorsa doğrudan erişilebilir (bu nedenle Doğrudan Erişimli Dosyalar da denir). Fakat dosyalarda gereksiz boşluklar bulunduğu için dosya boyu büyük olur. Rastgele Erişimli Dosyalarda, dosyadaki her kayıt aynı uzunluğa sahiptir ve doğrudan erişilebilir (Personel veri yapısında 160 bayt olması gibi). Bu sayede n. kayda erişmek gerektiğinde, önceki kayıtları atlamak için; (n 1) Kayıt Boyu kadar dosyada ilerleme seçeneği kullanılabilir.