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

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

Temel Bilgisayar Programlama

Eln 1002 Bilgisayar Programlama II

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

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

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

Genel Programlama II

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

ALGORİTMA VE PROGRAMLAMA II

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

Yrd. Doç. Dr. Caner ÖZCAN

DOSYA İŞLEMLERİ Programlama dilleri hafta -

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

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

Algoritma ve Programlama II Recursive Fonksiyonlar Dosyalama

Eln 1001 Bilgisayar Programlama I

Yrd. Doç. Dr. Caner ÖZCAN

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

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

SAKARYA ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÜZ DÖNEMİ PROGRAMLAMAYA GİRİŞ DERSİ

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

Temel Giriş/Çıkış Fonksiyonları

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

12. Saat : Dosyalar I (Files)

DOSYALAR. Temel terimler Hafta. Dr. Fahri Vatansever

Hafta 12 Karakter Tutan Diziler

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

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

Giris {\} /\ Suhap SAHIN Onur GÖK

Fen ve Mühendislik Uygulamalarında MATLAB

Dosyalar 1.1 Dosya Nedir?

BİL1001 Bilgisayar Bilimlerine Giriş 1

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

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ü

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

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

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

ALGORİTMA VE PROGRAMLAMA II

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

Deney 7: Fonksiyon Tanımlama ve Parametre Aktarım Yöntemleri

BİLG Dr. Mustafa T. Babagil 1

1 PROGRAMLAMAYA GİRİŞ

Bilgisayar Programlama MATLAB

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf

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

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

PROGRAMLAMAYA GİRİŞ DERS 2

MATLAB de Programlama & Dosya Yönetimi. EE-346 Hafta 6 Dr. Ayşe DEMİRHAN

/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

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

ALGORİTMA VE PROGRAMLAMA II

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

Giriş. ENF102 Jeoloji

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

C Programlama printf() Fonksiyonu

Sınav tarihi : Süre : 60 dak. c) En başta #include<stdio.h> yazılmamıştır. c) zt d) Pi e) X0

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

C++ Giriş Ders 5 MSGSU Fizik Bölümü Ferhat ÖZOK

KOCAELİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

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

Fonksiyonlar (Altprogram)

KONU 7: DOSYA İŞLEME ( File Processing )

C PROGRAMLAMA D İ L İ

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

Ders 4: Temel Giriş/Çıkış Fonksiyonları

Pythonda değişkenlerin türlerini tanımlamaya gerek yoktur

int printf (const char *format [, argument,...]);

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

Adı Soyadı : Öğrenci No :

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

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

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

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

Bigisayar Programlama

C++ Dersi: Nesne Tabanlı Programlama

C Programlama Dilininin Basit Yapıları

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

DİZİLER 5/4/2010. ENF-102 Jeoloji Giriş. Tek Boyutlu Diziler. Tek Boyutlu Diziler. Örnek. Örnek

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

Dr. Fatih AY Tel: fatihay@fatihay.net

Genel Programlama II

Diziler (Arrays) Çok Boyutlu Diziler

C++ Dersi: Nesne Tabanlı Programlama

Final Sınavı Soruları Güz, Süre: 90 Dakika

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya

Adım Adım C. Dr. Hidayet Takcı

C++ Operatörler (Operators)

Değişken atama Kullanıcıdan veri girişi istendiğinde kullanılır. 1. Bir değişkene değer atama (örn: a=4 gibi) 2. Klavyeden veri girme

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

MAK 1005 Bilgisayar Programlamaya Giriş C DİLİNE GİRİŞ. Prof. Dr. Necmettin Kaya

Fonksiyon Türleri. Bildiğiniz gibi, C++'da iki fonksiyon türü ile karşılaşıyoruz. C++'nın kullanıma sunduğu hazır fonksiyonlar.

Programlama Dilleri 1. Ders 4: Diziler

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

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

C++ Dersi: Nesne Tabanlı Programlama

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

Transkript:

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

Metin Dosyaları Metin dosyaları, verileri bir kere hazırlayıp, ikincil saklama biriminde (disk, CD v.b.) tutmaya ve daha sonra defalarca kullanmaya olanak tanır.

Metin Dosyaları Ali 90 Osman 10 Aysel 25... Her bir öğrenci için hazırlanan ve dosya içinde tek bir satırda tutulan bilgilerden her birine kayıt adı verilir. Örneğin, Ali 90 bir kayıttır. Dosyada, kayıtları ayırmakta, dosya sonunu göstermektedir.

Metin Dosyaları Değişken uzunlukta kayıtları içeren dosya: Ali 81 Musa 78 Aysel 66 Osman 54 Sabit uzunlukta kayıtları içeren dosya: Ali 81 Musa 78 Aysel 66 Osman 54

Dosya Açma ve Kapama Dosya Göstergesi fiziksel dosyaya erişim için programın içinden tanımlanmış olan bir iç dosya adıdır. FILE *iç_dosya_adı; Dış dosya adı ise, işletim sistemi üzerinde dosyaya verilen ismi temsil eder Örnek: Disk üzerinde daha önceden hazırlamış olduğumuz bir dosyaya programımız içinden erişebilmek için aşağıdaki tanımlamayı yapalım. FILE *ogrencidosyası;

Dosya Açma ve Kapama Dosya Açma FILE * iç_dosya_adı; iç_dosya_adı = fopen(dış_dosya_adı, dosya_açma_modu); fopen()fonksiyonu dış_dosya_adı nı taşıyan dosyanın açılmasını sağlar ve bu dosyanın adresinin programa döndürülmesini sağlar. dosya_açma_modu : dosyanın hangi amaçla açılacağını belirlemek için kullanılan bir parametredir.

Dosya Açma ve Kapama mod Anlamı r w a Okuma (read) Yazma (write) ve dosya yaratma Sonuna ekleme (append) r+ Okuma ve yazma w+ Okuma, yazma ve dosya yaratma (önceki veriler silinir) a+ Okuma, yazma ve dosya yaratma (önceki verilerin sonuna devam edilir) Dosya Açma modları

Dosya Açma ve Kapama Örnek: FILE *ogrencidosyasi; ogrencidosyasi = fopen( test.txt, w ); ogrencidosyasi Ali 81 Musa 78 Aysel 66 Osman 54 test.txt

Dosya Açma ve Kapama Dosya Kapama fclose()fonksiyonu daha önce fopen() fonksiyonu ile açılmış olan bir dosyanın kapatılmasını sağlar. fclose(iç_dosya_adı); Örnek: FILE *ogrencidosyasi; ogrencidosyasi=fopen( c:\test.txt, w );... fclose(ogrencidosyasi);

Okuma İşlemleri Metin dosyasi okuma amaçlı r modunda açılmalıdır. Dosya Okuma ve Yazma fgetc()fonksiyonu dosyadan göstergenin o an gösterdiği karakterin alınmasını sağlar. fgetc( iç_dosya_adı);

Dosya Okuma ve Yazma Örnek: FILE *dosyaoku; dosyaoku=fopen("input.txt","r"); char ch; ch = fgetc(dosyaoku); printf("dosyadaki ilk karakter: %c\n", ch); Çıktı: Dosyadaki ilk karakter: A

Dosya Okuma ve Yazma fgets() fonksiyonu dosyadan bir dizgi okur ve bu dizginin göstergesini geri döndürür.. Örnek: fgets(dizgi, n, iç_dosya_adı); FILE *dosyaoku; dosyaoku=fopen("input.txt","r"); char st1[30]; fgets(st1,4,dosyaoku); printf("st1: %s\n", st1); Çıktı: st1: Ali

Dosya Okuma ve Yazma fscanf() fonksiyonu scanf() fonksiyonuna benzer bir şekilde çalışır ve verileri dosyadan okur. fscanf(iç_dosya_adı, format,...); Örnek: int x, y,k; double z,t; char ch; char st1[30],st2[30]; FILE *dosyaoku; dosyaoku=fopen("oku.txt","r"); fscanf(dosyaoku,"%d\n",&x); printf("%d\n", x); Çıktı: 123

Dosya Okuma ve Yazma Yazma İşlemleri Metin dosyasi okuma amaçlı w modunda açılmalıdır. fputc() fonksiyonu tek bir karakterin dosyaya yazılmasını sağlar. fputc(karakter_tanımı, iç_dosya_adı); Örnek: char ch='a'; FILE *dosyayaz; dosyayaz=fopen("ogrenci.txt","w"); fputc(ch, dosyayaz);

Dosya Okuma ve Yazma fputs() fonksiyonu dosyaya bir dizginin yazılmasını sağlar. fputs(dizgi, iç_dosya_adı); Örnek: FILE *dosyayaz; dosyayaz=fopen("ogrenci.txt","w"); fputs("ali 82\n",dosyaYaz); fputs("aysu 97\n",dosyaYaz); fclose(dosyayaz);

Dosya Okuma ve Yazma fprintf() fonksiyonu dosyaya formatlı bir biçimde yazma işlemi yapmak amacıyla kullanılır. fprintf(iç_dosya_adı, format,...); Örnek: #include<stdio.h> #include<math.h> main(){ char okudosyaadi[] = "c:/dosya_oku.txt"; char yazdosyaadi[] = "c:/dosya_yaz.txt"; char ad[30]; int no; FILE *yfp, *ofp; ofp = fopen(okudosyaadi,"r"); fscanf(ofp,"%s %d",&ad,&no); yfp = fopen(yazdosyaadi,"w"); fprintf(yfp,"%d %s\n",no, ad); fclose(ofp); fclose(yfp); } Osman 129 129 Osman

Dosya Okuma ve Yazma Örnek: Bir dosya içinden öğrencilerin dönem içindeki iki ara sınav ve bir final notunu okuyan ve dönem sonu notunu ara sınavların %25 ve final notunun %50 etkileyecek şekilde hesaplayarak diğer bir dosyaya yazdıran bir program yazınız. #include <stdio.h> int main(void) { int mt1, mt2, final, donemnotu; char ad[30]; FILE *dosyaoku; FILE *dosyayaz; dosyaoku=fopen("ogrenci.txt","r"); dosyayaz=fopen("notlar.txt","w"); while (fscanf(dosyaoku,"%s %d %d %d\n",&ad, &mt1, &mt2, &final)!= EOF) { donemnotu = (mt1 *0.25)+(mt2*0.25)+(final*0.5); fprintf(dosyayaz,"%s: %d\n", ad, donemnotu); } fclose(dosyaoku); fclose(dosyayaz); return(0); } Osman: 73 Veli: 62 Aysu: 77 Sukran: 69 Muhittin: 84 notlar.txt

Standart Girdi / Çıktı stdout: genellikle bilgisayar ekranı olarak önceden tanımlanmış olan ve standart çıktı biriminin nereyi göstereceğini belirlemeye yarayan bir tanımlama alanıdır. stdin: standart girdi birimini tanımlar ve genellikle klavye olarak önceden tanımlanmıştır. Örnek: fprintf() fonksiyonunun çıktısının bir dosya içine değil de ekrana yansıtılması mümkündür. fprintf(stdout,"merhaba Dunya\n"); Örnek: Benzer bir işlem fscanf() fonksiyonu ile aşağıdaki gibi gerçekleştirilir. fscanf(stdin,"%d",&sayi1);

Hata Kontrolü FILE *dg; tanımlamasına göre hata kontrolleri Fonksiyon Tanımı clearerr(dg); feof(dg); ferror(dg); perror(s); Açıklama Hata ve dosya-sonu durumunun temizlenmesini sağlar. Dosya-sonuna (EOF) ulaşılmış ise sıfırdan farklı bir değer, diğer durumlarda sıfır döndürür. Hata durumu oluşmuş ise sıfırdan farklı bir değer, diğer durumlarda sıfır değerini döndürür. Standart çıktı biriminde tek satırdan oluşan bir hata mesajının gösterilmesini sağlar.

Hata Kontrolü Örnek: FILE *ofp; ofp=fopen("c:/dosya_oku.txt","r"); if (ofp==null) perror ("Hata: Dosya Acilamadi"); else { fputc ('x',ofp); if (ferror (ofp)){ printf ( Hata: c:/dosya_oku.txt dosyasina ); printf ( yazma islemi gerceklesmedi\n ); } } fclose (ofp);

C++ PROGRAMLAMADA DOSYALAMA İŞLEMİ C++ ta dosyaya kaydetme ve dosyadan okuma işlemlerini ofstream ve ifstream sınıflarını kullanarak yapıyoruz. Bu sınıfları içinde barındıran fstream dosyasını öncelikle programımıza eklememiz gerekiyor. #include<fstream> Dosyaya kayıt yapmak için ofstream sınıfından bir nesne oluşturuyoruz, <<operatörü ile verilerimizi dosyaya kaydediyoruz. #include<fstream> using namespace std; int main () { int x; ofstream yaz("veri.txt"); x=5; yaz<<x; yaz.close(); return 0; } Görüldüğü üzere x değişkenine 5 değeri atandı ve dosyaya yazdırıldı.

Peki aynı dosyaya tekrar bir şeyler kaydetmek istediğimizde ne yapacağız? Bu kez dosyayı ekleme(append) modunda açmamız gerekiyor. ofstream yaz( Veri.txt, ios::append); //append yerine app yazılabilir Burada dikkat etmemiz gereken nokta dosyaya kaydedilen verilerin birbirine karışmamasıdır. Mesela biraz önce Veri.txt dosyasına 5 yazdırdık. Ardından herhangi bir sayı daha yazdırdığımızda dosyada bu sayılar tek bir sayı gibi görünecektir (5 ve 2 yazdırdığımızda 52). Daha sonra programdan dosyadaki veriyi okumasını istediğinizde 52 olarak okuyacaktır. Bu karışıklığı engellemek için kaydedeceğimiz verilerin arasına bir boşluk koyuyoruz.

int main () { int y; ofstream yaz( Veri.txt, ios::app); oluşturduk y=2; yaz<< <<y; yaz.close(); return 0; } //ofstream sınıfından yaz isminde bir nesne Görüldüğü üzere y değişkenini yazdırmadan önce bir boşluk ekledik.

Dosyadan veri okuma işlemi ise ifstream sınıfı kullanılarak yapılır. int main () { int x; ifstream oku( Veri.txt ); //ifstream sınıfından oku nesnesini oluşturduk. oku>>x; //dosyada bulunan ilk veriyi okuyup x değişkenine atadık. oku.close(); return 0; }

Peki dosyada birden fazla veri varsa ne yapacağız? Dosya işlemleri sıralı erişim tipinde işlemlerdir. Dosyada bir veriyi okumak istediğinizde onun önünde bulunan tüm verileri okuyup atlamanız gerekir. Örneğin dosyada bulunan 5. veriyi okumak istediğinizde önce ilk 4 veriyi okuyup atlamanız gerekiyor. for(i=0;i<5;i++) { oku>>x; } şeklinde uygulanabilir. Burada önemli olan nokta, dosya açıldıktan sonra yani ifstream sınıfından bir nesne oluşturulduktan sonra dosya kapatılana kadar dosyaya sıralı erişim yapıldığıdır.

Örnek : #include<iostream> #include<fstream> using namespace std; int main() { ifstream oku( Veri.txt,ios::app) oku>>x; //Dosyadaki ilk veriyi x değişkenine atadık. cout<<x<<endl; oku>>y; //Dosyadaki ikinci veriyi y değişkenine atadık. cout<<y<<endl; oku.close(); } Dosyada sırasıyla 5 ve 2 sayılarının bulunduğunu varsayarsak ekrana önce 5 sonra 2 sayısı yazılacaktır. Yani oku.close() komutu kullanılana kadar dosyadan okuma işlemi yaptığınızda program en son kaldığı yerden verileri okumaya devam edecektir.