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



Benzer belgeler
DOSYALAR. Temel terimler Hafta. Dr. Fahri Vatansever

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

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Temel Bilgisayar Programlama

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

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Eln 1002 Bilgisayar Programlama II

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

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

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

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

ALGORİTMA VE PROGRAMLAMA II

Yrd. Doç. Dr. Caner ÖZCAN

DOSYA İŞLEMLERİ Programlama dilleri hafta -

Dosyalar 1.1 Dosya Nedir?

Genel Programlama II

ALGORİTMA VE PROGRAMLAMA II

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

Yrd. Doç. Dr. Caner ÖZCAN

Eln 1001 Bilgisayar Programlama I

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

Verileri Sıralı ve Random Erişimli Dosyalamak

12. Saat : Dosyalar I (Files)

ALGORİTMA VE PROGRAMLAMA II

ELN1001 BİLGİSAYAR PROGRAMLAMA I

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

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

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

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

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

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

Diziler (Arrays) Çok Boyutlu Diziler

Dr. Fatih AY Tel: fatihay@fatihay.net

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

Chapter 11 Dosya İşleme

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İ

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

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

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

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

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

C Programlama Dilininin Basit Yapıları

Temel Giriş/Çıkış Fonksiyonları

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ü

Strings(Karakter Dizisi)

Programlama Dilleri 1. Ders 4: Diziler

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

ALGORİTMA VE PROGRAMLAMA I

PROGRAMLAMAYA GİRİŞ DERS 2

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Ş (

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

Pointer Kavramı. Veri Yapıları

C Programlama printf() Fonksiyonu

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

2 ISINMA TURLARI - DERLEYİCİ VE DERLEME KAVRAMLARIYLA BİRLİKTE GCC DERLEYİCİSİNE BİR BAKIŞ

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

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

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

Dizgiler. C dilinde karakter m şeklinde tek tırnak içerisinde yazılan ifadelerdir. Bu karakterlerin her biri aslında bir tamsayı ile ifade edilir.

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

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

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

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

8. İŞARETCİLER (POINTERS)

Fonksiyonlar (Altprogram)

Fen ve Mühendislik Uygulamalarında MATLAB

BİL1001 Bilgisayar Bilimlerine Giriş 1

C Konsol Giriş Çıkış Fonksiyonları

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

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

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Bilgisayar Programlama MATLAB

ALGORİTMA VE PROGRAMLAMA II

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

Sıralı Erişimli Dosyalar. Kütük Organizasyonu 1

Yrd. Doç. Dr. Caner ÖZCAN

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

Özyineleme (Recursion)

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

C PROGRAMLAMA D İ L İ

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

C nin Stantart Dosya Fonksiyonlarının Uyguladığı Tamponlama Mekanizması

Göstericiler (Pointers)

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

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

Programlama Dilleri 1. Ders 5: Göstericiler

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

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

Hafta 12 Karakter Tutan Diziler

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

BÖLÜM 5: TEMEL GİRİŞ/ÇIKIŞ FONKSİYONLARI

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

BİLG Dr. Mustafa T. Babagil 1

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır:

C PROGRAMLAMA D İ L İ

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

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

ALGORİTMA VE PROGRAMLAMA I

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

ALGORİTMA VE PROGRAMLAMA II

Transkript:

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

Dosyaların Temel İşlemleri Bilgiler dosyada belirli bir düzen içerisinde yer alırlar Örn: ALAN THARP 100 100 100 JOHN BISHOP 70 80 75 PAUL AUSTER Bir satırda olabilecek karakter sayısı konusunda bir sınırlama yoktur Satır bitişini karakteri gösterir 40 MICHEAL 100 IRON 70 90 90 90 JEAN HILL Bu tarz bir dosyada 3kişi hakkında bilgi edinmek istenirse kendisinden önceki ilk 2 kaydı da mutlaka okumak gerekir (veya bu kayıtlar önceden okunmuş olmalıdır) 30 60 45 Kütük Organizasyonu 2

Dosyadaki belirli bir kayda ulaşmak için dosyanın başından başlayarak istenilen kayda doğru okumanın sırasıyla yapılması gerekir Bundan dolayı, bu tür dosyalara sıralı erişimli dosyalar (sequential files) denir Bu tür dosyalar ayrıca text dosyalar olarak da bilinir Kütük Organizasyonu 3

8 8 3 3 3 ALAN THARP 100 100 100 JOHN BISHOP 70 80 75 PAUL AUSTER 40 100 70 MICHEAL IRON 90 90 90 JEAN HILL 30 60 45 Her bir kayıt 25 karakterden oluşmaktadır Kayıt uzunluğu sabit olduğu için böyle bir dosyada herhangi bir anda herhangi bir kayda ulaşmak mümkündür Örneğin 4 kaydı öğrenmek için baştan itibaren 76 karakterden başlayarak kaydı okumak mümkündür Bu tür dosyalara rastgele erişimli (Random access files) denir Kütük Organizasyonu 4

Dosyalarla İlgili Komutlar Dosyalarla ilgili komutları 6 grup altında toplamak mümkündür Bunlar : Hata kontrol komutları Dosyanın açılması Dosyanın kapatılması Dosyaya Yazma Dosya Okuma Diğer Dosya Kullanım Komutları Kütük Organizasyonu 5

Bilgisayarın Dosyalara Erişimi İşlemler buffer denilen bir tampon üzerinde gerçekleştirilir Buffer, bellek üzerinde belli bir uzunlukta olan byte belirtilmedikçe uzunluğu 512 byte tır) dizisidir (Aksi Dosya okumak için açıldığında ilk 512 byte ı bu tampon belleğe yerleştirilir Yazma işleminde ise yazılan karakterler tampon bellekte tutulur Tampon bellek dolduğunda tüm bilgiler diske yazılır Not: Bir dosyaya erişim yapılırken, yazılacakların hangi satır ve sütuna gerçekleştirileceğini belirleyen Kayıt İşaretçisi (Kİ) kullanılır Kütük Organizasyonu 6

C de, standart bir dosya tipi tanımlanmıştır Ancak stdioh başlık dosyası içinde FILE yapısal veri tipi aşağıdaki gibidir typedef struct { short level; unsigned flags; char fd; unsigned char hold; short bsize; unsigned char *buffer; unsigned char *curp; unsigned istemp; short token; } FILE; Bu yapısal veri tipi kullanılarak: FILE *A_dosyası, *B_dosyası; tanımlanır Kütük Organizasyonu 7

typedef struct { short level; unsigned flags; char fd; unsigned char hold; short bsize; unsigned char *buffer; unsigned char *curp; unsigned istemp; short token; Tampon belleğin dolu olup olmadığını kontrol eder Dosyanın durumunu gösterir Dosya belirticisidir Ungetch() fonksiyonu için ayrılmış bir tamsayıdır Tampon belleğin uzunluğunu verir (Default: 512 byte) Tampon belleğin başlangıç adresini verir Tampon bellek üzerinde okunacak yada yazılacak karakterlerin pozisyonunu belirtir Geçici dosya göstericisidir Kontrol için kullanılır } FILE; Kütük Organizasyonu 8

Standart Dosyalar Bilgisayara veri giriş-çıkışı için kullanılan klavye ekran, printer ve portları da birer dosya olarak tanımlamak mümkündür Bu cihazlar sıralı erişimli dosya gibi davranırlar Klavye stdin Ekran stdout Printer stdprn Yrd Port stdaux Ayrıca hata mesajlarının yazıldığı bir çıkış dosyası vardır Bu da stderr dir Bu dosyalar programın başında otomatik olarak tanımlanıp kullanım için açılırlar Kütük Organizasyonu 9

Dosyalarla İlgili İşlemler ve Hata Kontrolü 3 tane hata yakalama fonksiyonu verilmiştir feof Dosya okumak için açıldığında dosya sonuna ulaşılıp ulaşılmadığını kontol etmek amacıyla kullanılır Prototipi : İnt feof (FILE *dosya); Geri dönen değer 0 ise dosya sonuna ulaşılmamıştır Kütük Organizasyonu 10

ferror Dosyalarla ilgili daha genel hataların olup olmadığının belirlenmesi amacıyla kullanılır Prototipi : int ferror (FILE *dosya); Geri dönen değer 0 ise dosyada hata yok demektir clearerr Hata kontrolü yapıldıktan sonra, hatalı durum ortadan kalktığında, daha sonraki kontrollerin doğru yapılabilmesi için, önceki hataların sıfırlanması gerekir Bunu da clearerr fonksiyonu sağlar Prototipi : void clearerr (FILE *dosya); Kütük Organizasyonu 11

Dosya Oluşturma ve Dosya Açma fopen ( ) Prototipi FILE *fopen (char *dosya_adi, char *mod) Mod seçeneği dosyanın açılış şeklini belirler r Varolan bir dosyanın sadece okumak için açılmasını sağlar w Yazmak için yeni bir dosya oluşturur Dosya daha önceden mevcut ise silinerek yazılmak için yeniden açılır a Varolan dosyanın sonuna yeni bilgiler eklemek için kullanılır Dosya mevcut değilse yeni bir dosya açılır Kütük Organizasyonu 12

fopen ( ) Prototipi FILE *fopen (char *dosya_adi, char *mod) Mod seçeneği dosyanın açılış şeklini belirler r+ Varolan bir dosyayı üzerinde hem okuma hem de yazma yapmak için açar w+ Dosyayı okumak ve yazmak için yeni bir dosya oluşturur a+ Okumak ve yazmak için yeni bir dosya oluşturur ve en son pozisyonda bekler Bu modlara ilave olarak t ve b karakterleri de ilave edilir t Dosyanın text olduğunu belirtir İlave edilmezse dosya default text olarak işlem görür b Dosyanın doğrudan binary düzeyde işlendiğini belirtir Kütük Organizasyonu 13

fopen( ), kendisini çağırana bir adres gönderir Dosya açılamazsa NULL; açılırsa dosya bilgilerinin saklanıdığı topluluğun başlangıç adresini gönderir Bu adres, daha sonraki erişimlerde kullanılacağı için, işaretçi olarak tanımlanmış bir değişkene atanır # include <stdioh> FILE *di ; /*Dosya işaretçisi */ if ( (di=fopen( dosyatxt, w )) ==NULL) { puts( Dosya açılamadı\n ); } Kütük Organizasyonu 14

Dosya Kapatma Fonksiyonları Dosyanın kapatılması, dosya tampon belleğinin diske kaydedilmesi ve dosya ile ilişkinin kesilmesi demektir 2 farklı şekilde dosya kapatılabilr; i) flush Yazmak için açılan dosyanın tampon belleğindeki bilgileri diske aktarır Okumak için açılan dosyalarla bir ilgisi yoktur Fonksiyondan sonra dosya ile olan ilişki hala devam eder Prototipi a) int flush (FILE *dosya); Geri dönen değer 0 ise işlem başarılmıştır b) int flushall (void); Açılmış bütün dosyaların tampon belleklerini diske aktarır Kütük Organizasyonu 15

ii) fclose Okumak ve yazmak için açılmış herhangi bir dosyanın kapatılmasını sağlar Prototipi a) int fclose (FILE *dosya) ; Geri dönen değer 0 ise işlem başarılmıştır b) int fcloseall (void); Açık olan tüm dosyaları kapatır Kütük Organizasyonu 16

Örnek #include <stdioh> int main () FILE *di=fopen( denemetxt, r ); char c; While (!feof(di)) { Kayıtlar üzerinde işlemler } fclose (di); return 0; } Kütük Organizasyonu 17

Dosyaya Karakter Düzeyinde Erişmek i) fputc( ) Dosyaya tek bir karakter yazmak için kullanılır Prototipi ; int fputc (int c, FILE *dosya) ; Dosyaya yazılan bu karaktere ait ASCII kodudur Yazma işleminin hatasız yapılması halinde fputc, yazılan karakterin ASCII kodunu geri gönderir ii) putc( ) fputc fonksiyonu ile aynıdır Prototipi; int putc (int c, FILE *dosya) ; Kütük Organizasyonu 18

iii) fgetc( ) Dosyadan bir karakter okumak için kullanılır Prototipi; int fgetc (FILE *dosya) ; Okunan karakter bir tamsayı olarak geri dönmektedir Bu sayı 0-255 arasındadır 0 dan küçük olması durumunda dosya okumada bir hata vardır iv) getc( ) fgetc fonksiyonu ile aynıdır int getc (FILE *dosya) ; Not: Yazma işlemleri Kayıt işaretçisinin (Kİ) konumlandığı yere göre yapılır Kütük Organizasyonu 19

Örnek # include <stdioh> FILE *di; main () { FILE *di; char kr; if ( (di=fopen( deneme, w ))==NULL) { printf ( Dosya açılamadı \n ); } while ((kr=getchar())!= q ) putc(kr,di); fclose(di); } Klavyeden girilen karakter q olmadığı müddetçe klavyeden aldığı değeri denemetxt isimli dosyaya yazacaktır Kütük Organizasyonu 20

Örnek # include <stdioh> FILE *di; main () { FILE *di; char kr; if ( (di=fopen( deneme, w ))==NULL) { printf ( Dosya açılamadı \n ); } while (!feof(di)) { kr=getc(di) putchar(kr); fclose(di); } Dosyadan karakterler okunmakta ve ekrana yazılmaktadır Kütük Organizasyonu 21

Dosya sonuna gelinip gelinmediğinin sınanması 2 farklı şekilde gerçekleştirilebilir : i) while (!feof(di)) ii) while ( ( kr=getchar() )!=EOF) { { } } Kütük Organizasyonu 22

Dosyaya Karakter Katarı Düzeyinde Erişmek i) fputs( ) Dosyaya karakter dizisi yazmak için kullanılır Prototipi ; int fputs (char *s, FILE *dosya) ; s karakter dizisini dosya ile belirtilen yere yazar Karakter dizisi \0 ile son bulmasına rağmen, bu karakter dosyaya yazılmaz Başarılı bir yazma işlemi sonucunda 0 değeri geri döner Kütük Organizasyonu 23

ii) fgets( ) Dosyadan karakter dizisi okumak için kullanılır Prototipi ; char *fgets (char *DIZI,int N, FILE *dosya); DIZI ; okumanın yapılacağı dizinin başlangıç adresidir N ; dizinin maksimum uzunluğudur Not : Okuma esnasında satır sonu ile karşılaşılırsa dizi sonuna \0 karakteri ilave edilerek okuma tamamlanır Geri dönen pointerın NULL olması durumunda dosyada okunacak başka bilgi kalmamıştır Başarılı olarak okuma yaptığında okunanları yerleştirği katar değişkenin başlangıç adresini gönderir Kütük Organizasyonu 24

Örnek #include <stdioh> main () { FILE *di; char ad[10]; gets (ad); fputs(ad,di); } Yazma işlemi, ayrılan yer kadar değil, NULL karakteri ile karşılaşılana kadar yapılır Kütük Organizasyonu 25

Örnek # include <stdioh> main() { FILE *di; int n; char ad[10]; while (fgets(ad,n,di)!=null) puts(ad); } En falza n -1 karakter okuyup, ad dizi değişkenine yerleştirir Dönen değer NULL ise dosya sonuna gelinmiştir Kütük Organizasyonu 26

Dosyalara Formatlı Erişim i) fprintf( ) printf fonksiyonuna benzemektedir Prototipi: int printf (FILE *dosya,const char *format[,arguman listesi]); Geri dönüş değeri dosyaya yazılan karakter sayısıdır ii) fscanf( ) scanf fonksiyonuna benzemektedir Prototipi ; int scanf (FILE *dosya,const char *format,degisken adresleri listesi); Geri dönen değer ise, kaç tane değişken okunduğunu gösterir Kütük Organizasyonu 27

i) fwrite( ) Dosyalara Toplu Erişim Belleğin belli bir bölümünü bir defade dosyaya yazmak amacıyla kullanılır Prototipi; int fwrite(void *Bellek,int UZUNLUK, int N, FILE *dosya) Bu fonksiyon, BELLEK adresinden başlayan ve herbirinin UZUNLUK kadar olan N adet veriyi dosyaya aktarır uzunluğu ii) fread( ) Bilgiyi verilen bir alana transfer eder Prototipi; fread(void *Bellek,size_t UZUNLUK, size_t ADET, FILE *dosya) BELLEK okuma yapılacak bellek bölümünün başlangıç adresidir Bu bölümün uzunluğu UZUNLUK x ADET kadardır Kütük Organizasyonu 28

Örnek #include<stdioh> main() { FILE *di; İnt dizi[ ]={10,15,18,}; int tane; fwrite(dizi,sizeof(int),n,di); } #include<stdioh> main() { FILE *di; int dizi[ ] fread(dizi,sizeof(int),10,di); } Kütük Organizasyonu 29

Diğer Kullanım Fonksiyonları i) ftell( ) Dosya göstericisinin pozisyonunu belirlemek için kullanılanılır Prototipi long ftell (FILE *dosya) Dosya göstericisinin pozisyonunun kaçıncı byte ı gösterdiğini dönüş bilgisi olrak verir ii) fseek( ) Dosya göstericisinin pozisyonunu değiştirmek için kullanılanılır Prototipi int fseek (FILE *dosya, long Konum, int Baslama_sekli ) Konum ; Dosya göstericisinin hangi byte ı göstereceğini belirleyen değerdir Baslama_sekli ; Belirlenen başlangıç byte ıdır 3 değeri mevcuttur Kütük Organizasyonu 30

a) SEEK_SET; hesaplamanın dosyanın başından itibaren yapılmasını sağlar Örn: fseek(veri,7,seek_set) 0 1 2 3 4 5 6 7 8 Dosya Başlangıcı Dosya göstericisinin pozisyonu b) SEEK_END; hesaplamanın dosyanın sonundan itibaren yapılmasını sağlar b) SEEK_CUR; hesaplamanın dosya işaretçisinin bulunduğu konumdan itibaren yapılmasını sağlar Konumun 0 olması dosya işaretçisinin konumunu değiştirmez 0 dan büyük olması durumunda ileri, küçük olması durumunda geriye doğru sıçrar Kütük Organizasyonu 31

iii) Rewind( ) Dosya göstericisini dosyanın ilk byte ına getirmek amacıyla kullanılır Prototipi: void rewind (FILE *dosya) iv) fgetpos( ) Dosya gösterici pozisyonun değerini pozisyon değişkenine yerleştirir Prototipi int fgetpos (FILE *dosya, fpos_t *pozisyon) fpos_t tipi stdioh dosyasında tanımlanmıştır v) fsetpos( ) Dosya değişkeninin belirttiği dosyanın pozisyon ile verilen byte ına ulaşmak için kullanılır Prototipi: int fsetpos (FILE *dosya, const fpos_t *pozisyon) Kütük Organizasyonu 32