You are on page 1of 20

Blm 11 Metin Dosyalar

Metin Dosyalar Dosya Ama ve Kapama Dosya Okuma ve Yazma

Rastgele Eriim
Standart Girdi/kt

Hata Kontrol

Metin Dosyalar
Metin dosyalar, verileri bir kere hazrlayp, ikincil saklama biriminde (disk, CD v.b.) tutmaya ve daha sonra defalarca kullanmaya olanak tanr.

C DERS Programlamaya Giri Blm 11 Metin Dosyalar

Metin Dosyalar
Ali 90 Osman 10 Aysel 25 ...

Her bir renci iin hazrlanan ve dosya iinde tek bir satrda tutulan bilgilerden her birine kayt ad verilir. rnein,
Ali 90 bir kayttr. Dosyada, kaytlar ayrmakta, dosya sonunu gstermektedir.
C DERS Programlamaya Giri Blm 11 Metin Dosyalar 3

Metin Dosyalar
Deiken uzunlukta kaytlar ieren dosya:
Ali81 Musa78 Aysel66 Osman54

Sabit uzunlukta kaytlar ieren dosya:


Ali81 Musa78 Aysel66 Osman54

C DERS Programlamaya Giri Blm 11 Metin Dosyalar

Dosya Ama ve Kapama


Dosya Gstergesi fiziksel dosyaya eriim iin programn iinden tanmlanm olan bir i dosya addr.

FILE *i_dosya_ad;
D dosya ad ise, iletim sistemi zerinde dosyaya verilen ismi temsil eder rnek: Disk zerinde daha nceden hazrlam olduumuz bir dosyaya programmz iinden eriebilmek iin aadaki tanmlamay yapalm.
FILE *ogrenciDosyas;

C DERS Programlamaya Giri Blm 11 Metin Dosyalar

Dosya Ama ve Kapama


Dosya Ama FILE * i_dosya_ad; i_dosya_ad = fopen(d_dosya_ad, dosya_ama_modu); fopen()fonksiyonu d_dosya_adn tayan dosyann almasn salar ve bu dosyann adresinin programa dndrlmesini salar.

dosya_ama_modu : dosyann hangi amala alacan belirlemek iin kullanlan bir parametredir.

C DERS Programlamaya Giri Blm 11 Metin Dosyalar

Dosya Ama ve Kapama


mod Anlam r w a r+ Okuma (read) Yazma (write) ve dosya yaratma Sonuna ekleme (append) Okuma ve yazma

w+
a+

Okuma, yazma ve dosya yaratma (nceki veriler silinir)


Okuma, yazma ve dosya yaratma (nceki verilerin sonuna devam edilir)

Dosya Ama modlar


C DERS Programlamaya Giri Blm 11 Metin Dosyalar 7

Dosya Ama ve Kapama

rnek: FILE *ogrenciDosyasi; ogrenciDosyasi = fopen(test.txt, w);

ogrenciDosyasi

Ali81 Musa78 Aysel66 Osman54

test.txt

C DERS Programlamaya Giri Blm 11 Metin Dosyalar

Dosya Ama ve Kapama


Dosya Kapama fclose()fonksiyonu daha nce fopen() fonksiyonu ile alm olan bir dosyann kapatlmasn salar.

fclose(i_dosya_ad);
rnek: FILE *ogrenciDosyasi; ogrenciDosyasi=fopen(c:\test.txt,w);
... fclose(ogrenciDosyasi);
C DERS Programlamaya Giri Blm 11 Metin Dosyalar

Dosya Okuma ve Yazma


Okuma lemleri Metin dosyasi okuma amal r modunda almaldr. fgetc()fonksiyonu dosyadan gstergenin o an gsterdii karakterin alnmasn salar.

fgetc( i_dosya_ad);

C DERS Programlamaya Giri Blm 11 Metin Dosyalar

10

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
C DERS Programlamaya Giri Blm 11 Metin Dosyalar

11

Dosya Okuma ve Yazma


fgets() fonksiyonu dosyadan bir dizgi okur ve bu dizginin gstergesini geri dndrr..

fgets(dizgi, n, i_dosya_ad);
rnek:
FILE *dosyaOku; dosyaOku=fopen("input.txt","r"); char st1[30]; fgets(st1,4,dosyaOku); printf("st1: %s\n", st1);

kt:
st1: Ali

C DERS Programlamaya Giri Blm 11 Metin Dosyalar

12

Dosya Okuma ve Yazma


fscanf() fonksiyonu scanf() fonksiyonuna benzer bir ekilde alr 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
C DERS Programlamaya Giri Blm 11 Metin Dosyalar 13

Dosya Okuma ve Yazma


Yazma lemleri Metin dosyasi okuma amal w modunda almaldr.

fputc() fonksiyonu tek bir karakterin dosyaya yazlmasn salar. fputc(karakter_tanm, i_dosya_ad); rnek:
char ch='A'; FILE *dosyaYaz; dosyaYaz=fopen("ogrenci.txt","w"); fputc(ch, dosyaYaz);

C DERS Programlamaya Giri Blm 11 Metin Dosyalar

14

Dosya Okuma ve Yazma


fputs() fonksiyonu dosyaya bir dizginin yazlmasn salar. 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);

C DERS Programlamaya Giri Blm 11 Metin Dosyalar

15

Dosya Okuma ve Yazma


fprintf() fonksiyonu dosyaya formatl bir biimde yazma ilemi yapmak amacyla kullanlr. fprintf(i_dosya_ad, format, ....); rnek:
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);
C DERS Programlamaya Giri Blm 11 Metin Dosyalar

Osman 129

129 Osman

16

Dosya Okuma ve Yazma


rnek: Bir dosya iinden rencilerin dnem iindeki iki ara snav ve bir final notunu okuyan ve dnem sonu notunu ara snavlarn %25 ve final notunun %50 etkileyecek ekilde hesaplayarak dier bir dosyaya yazdran bir program yaznz.
#include <stdio.h> Osman: 73 int main(void) Veli: 62 { int mt1, mt2, final, donemNotu; Aysu: 77 char ad[30]; Sukran: 69 FILE *dosyaOku; Muhittin: 84 FILE *dosyaYaz; dosyaOku=fopen("ogrenci.txt","r"); notlar.txt 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); } C DERS Programlamaya Giri
Blm 11 Metin Dosyalar 17

Standart Girdi / kt
stdout: genellikle bilgisayar ekran olarak nceden tanmlanm olan ve standart kt biriminin nereyi gstereceini belirlemeye yarayan bir tanmlama alandr. stdin: standart girdi birimini tanmlar ve genellikle klavye olarak nceden tanmlanmtr.

rnek: fprintf() fonksiyonunun ktsnn bir dosya iine deil de ekrana yanstlmas mmkndr.
fprintf(stdout,"Merhaba Dunya\n");

rnek: Benzer bir ilem fscanf() fonksiyonu ile aadaki gibi gerekletirilir.
fscanf(stdin,"%d",&sayi1);
C DERS Programlamaya Giri Blm 11 Metin Dosyalar

18

Hata Kontrol
FILE *dg; tanmlamasna gre hata kontrolleri
Fonksiyon Tanm Aklama

clearerr(dg); feof(dg); ferror(dg); perror(s);

Hata ve dosya-sonu durumunun temizlenmesini salar. Dosya-sonuna (EOF) ulalm ise sfrdan farkl bir deer, dier durumlarda sfr dndrr. Hata durumu olumu ise sfrdan farkl bir deer, dier durumlarda sfr deerini dndrr. Standart kt biriminde tek satrdan oluan bir hata mesajnn gsterilmesini salar.

C DERS Programlamaya Giri Blm 11 Metin Dosyalar

19

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 DERS Programlamaya Giri Blm 11 Metin Dosyalar

20

You might also like