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



Benzer belgeler
DOSYA İŞLEMLERİ Programlama dilleri hafta -

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Eln 1002 Bilgisayar Programlama II

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

Temel Bilgisayar Programlama

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

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

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

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

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

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

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

8. İŞARETCİLER (POINTERS)

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İ

ALGORİTMA VE PROGRAMLAMA II

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

7. FONKSİYONLAR. Dönüş_Tipi Fonksiyon_Adı (tip giriş_parametreleri);

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

Eln 1001 Bilgisayar Programlama I

Fonksiyonlar (Altprogram)

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

Genel Programlama II

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

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

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

Strings(Karakter Dizisi)

Yrd. Doç. Dr. Caner ÖZCAN

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

Struct VE GÖSTERİCİLER FONKSİYONLARDA STRUCT KULLANIMI Programlama dilleri hafta -

1 PROGRAMLAMAYA GİRİŞ

PROGRAMLAMAYA GİRİŞ DERS 2

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

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

C PROGRAMLAMA D İ L İ

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

C PROGRAMLAMA D İ L İ

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

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

BİLG Dr. Mustafa T. Babagil 1

Hafta 12 Karakter Tutan Diziler

ALGORİTMA VE PROGRAMLAMA II

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

12. Saat : Dosyalar I (Files)

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

Diziler (Arrays) Çok Boyutlu Diziler

Programlama Dilleri 1. Ders 5: Göstericiler

Döngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları

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

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

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

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

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

BÖLÜM 1b: C++ PROGRAMLAMANIN YAPISI. C++, hard diskte TC, BIN, INCLUDE, LIB gibi alt dizinlere yüklenir.

BİLG Dr. Mustafa T. Babagil 1

Ders 6: Karşılaştırma Deyimleri

ELN1001 BİLGİSAYAR PROGRAMLAMA I

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

Hafta 13 Fonksiyonlar

BİLİNİRLİK ALANI ve ÖMÜR, KONTROL DEYİMLERİ

Dr. Fatih AY Tel:

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

Fonksiyonlar -Genel Test- A

Ders 5: Temel Kütüphane Fonksiyonlar

8. Bölüm DİZİLER. tip dizi_ismi[eleman_sayısı]; Bütün diziler 0 ile baţlar.

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

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

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

Bölüm 4 C de Program Kontrolü

C PROGRAMLAMA D İ L İ

HSancak Nesne Tabanlı Programlama I Ders Notları

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

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

Dosyalar 1.1 Dosya Nedir?

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ü

C PROGRAMLAMA D İ L İ

Programlamaya Giriş. Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi.

C++ Dersi: Nesne Tabanlı Programlama

Yrd. Doç. Dr. Caner ÖZCAN

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

Dr. Fatih AY Tel: fatihay@fatihay.net

Temel Giriş/Çıkış Fonksiyonları

BÖLÜM 7: DÖNGÜ KONTROL YAPILARI

5. BÖLÜM (10ncu ve 11nci hafta)

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI

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

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

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İ

STRİNG DİZİLER(KATARLAR)

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

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

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

Programlama Dilleri 1. Ders 4: Diziler

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

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

3. VERİ GİRİŞ-ÇIKIŞI (4ncü hafta)

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

Kocaeli Üniversitesi C Bilgisayar Programlama Ara Sınavı Test Soruları

Giriş. ENF102 Jeoloji

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

Transkript:

10. DOSYA GİRİŞ ÇIKIŞ FONKSİYONLARI İkincil bellekte tanımlanmış bölgelere dosya denir. Her dosyanın bir ismi vardır. Ancak dosyaların isimlendirme kuralları sistemden sisteme göre değişebilmektedir. Dosya işlemleri tamamen işletim sisteminin kontrolü altındadır. Bir dosya üzerinde işlem yapmadan önce dosya açılmalıdır. Dosya açabilmek için işletim sisteminin dosya aç isimli bir sistem fonksiyonu kullanılır. Dosyanın açılması sırasında dosya ile ilgili çeşitli ilk işlemler işletim sistemi tarafından yapılır. Dosya açma işlemi iki basamaklı bir işlemdir, dosya açılmadan önce, o dosya ile ilgili bir işaretçinin tanımlanması yapılır. Bu tanımlama FILE tipinde işaretçi değişken ile yapılır. FILE *yaz; //FILE yapısı stdio.h içerisinde tanımlı İkinci aşamada dosya açma deyimi kullanılır. yaz = fopen(dosya_adı, mod) Dosya_Adı: Açmak istediğimiz dosyanın adı. Büyük - küçük harf ayrımı yok. Mod: Kullanım amacı, okuma, yazma değişiklik gibi. fopen fonksiyonun genel deklarasyonu (bildirimi) şu şekildedir. FILE *fopen (const char *fname, const char *mode) Fonksiyonun 1. Parametresi açılacak dosyanın ismidir. Dosya ismi path içerebilir. Dizin geçişleri için / de konulabilir. 2. Parametre açış modudur.açış modu şunlar olabilir : Mode "w" "w+" Anlamı Dosyayı yazmak için açar. Dosyadan okuma yapılamaz. Dosyanın mevcut olması zorunlu değildir. Dosya mevcut değilse yaratılır. Dosya mevcut ise sıfırlanır. Dosyayı yazma ve okuma için açar. Dosyanın mevcut olması zorunlu değildir. Dosya mevcut değilse yaratılır. Dosya mevcut ise sıfırlanır.

"r" "r+" "a" "a+" Dosyayı okuma için açar. Dosyaya yazma yapılamaz. Dosya mevcut değilse açılamaz. Dosyayı okuma ve yazma için açar. (Dosyanın pozisyon göstericisi dosyanın başındadır). Dosya mevcut değilse açılamaz. Dosyayı sonuna ekleme için açar. Dosyadan okuma yapılamaz. Dosyanın mevcut oaması zorunlu değildir. Dosya mevcut değilse yaratılır. Dosyayı sonuna ekleme ve dosyadan okuma için açar. Dosyanın mevcut olması zorunlu değildir. Dosya mevcut değilse yaratılır. Fonksiyonun geri dönüş değeri FILE yapısı türünden bir adrestir. Dosya çeşitli sebeplerden dolayı açılamayabilir. Bu durumda fopen NULL gösterici döndürür. Fonksiyonun geri dönüş değeri kesinlikle kontrol edilmelidir. Tipik bir kontrol işlemi aşağıdaki gibi yapılabilir: if ((yaz= fopen( c:\oku, r )) == NULL) printf( Dosya Açılamadı...\n); exit(1); Açılan dosya ile ilgili işlem bittikten sonra dosyanın kapatılması gerekmektedir. Dosyanın kapatılması açılması sırasında yapılan işlemlerin geri alınmasını sağlar. Örneğin dosyanın kapatılması sırasında, işletim sisteminin dosya tablosunda bulunan bu dosyaya ilişkin bilgiler silinir. Dosya kapama işlemi fclose fonksiyonu ile gerçekleştirilir. int fclose(file *stream); Bu fonksiyon açılmış olan bir dosyayı kapatır. Fonksiyon fopen ya da fropen fonksiyonundan elde edilen FILE yapısı türünden adresi parametre olarak alır ve açık olan dosyayı kapatır. Fonksiyonun geri dönüş değeri 0 ise dosya başarılı olarak kapatılmıştır. Fonksiyonun geri dönüş değeri EOF ise dosya kapatılamamıştır. EOF stdio.h içinde tanımlanan bir sembolik sabittir ve derleyicilerin çoğunda (-1) olarak tanımlanmıştır. Fonksiyonun başarısı ancak şüphe altında test edilmelidir. Normal şartlar altında dosyanın kapatılmaması için bir neden yoktur. int main()

FILE *f; if ((f = fopen( data, w )) ==NULL) printf( cannot open file...\n); exit(1); fclose(f); return 0; Örnek1 Dosyaya yazma #include <stdio.h> main() FILE *kp; char *s; int i; kp = fopen("dene", "w"); /* NULL ise işlem başarısız */ if (kp == NULL) exit(1); for (i=0; i<5; i++) gets(s); fprintf(kp, "%s\n", s); getch(); fclose(kp); /* kütüğü kapatır. Program sona erdiğinde otomatik kapatılır */ /* fcloseall() hepsini kapatır. Dönen, kapanan kütük sayısı. Hata var ise EOF döner */

Yazarken kullanılan fprintf deyiminin çalışması printf gibidir. Sadece ilk parametre olarak kütük değişkenini vermek gerekir. Benzer kütük işlevleri int fgetc(file *stream); int fputc(int c, FILE *stream); char *fgets(char *s, int n, FILE *stream); n-1 karakter veya satır sonuna kadar okur int fputs(const char *s, FILE *stream); satır sonu bilgisini ayrıca yazmak gerekir Örnek 2: Dosyadan okuma #include <stdio.h> main() FILE *kp; char *s; int i; kp = fopen("dene", "r"); if (kp == NULL) exit(1); for (i=0; i<5; i++) fscanf(kp, "%s", s); printf("%s\n", s); /* Kütükteki kayıt sayısı bilimiyor ise */ rewind(kp); /* fseek(stream, 0L, SEEK_SET) SEEK_SET 0 baştan SEEK_CUR 1 bulunulan yerden SEEK_END 2 sondan */ fscanf(kp, "%s", s);

while (!feof(kp)) printf("%s\n", s); fscanf(kp, "%s", s); getch(); int feof(file *) : kütüğün sonuna erişilmiş ise sıfırdan farklı bir değer alır. Aksi halde sıfırdır. rewind(file *) : kütük işaretçisinin (kütükteki hangı kayıdın okunacağı bilgisi) kütüğün başını göstermesini sağlar. Örnek 3: Bir RL devrenin çözümünün dosyaya yazdırılması. #include "stdio.h" #include "conio.h" #include "math.h" #include "stdlib.h" #define ADIM 0.00001 #define T0 0 #define TS 0.01 void main () FILE *kp; double f,t; double r,l,v,i,vr; r=10.0; l=0.01; v=50.0; kp=fopen("c:\\sonuc.dat","w"); if(kp==null) printf("dosya Acma Hatasi"); exit(1); for(t=adim;t<ts;t=t+adim)

f=-r*t/l; i=v/r*(1-exp(f)); fprintf(kp,"%6.8f %12.8f\n",t,i); printf("%6.8f %12.8f\n",t,i); Örnek 4: Bir fonksiyonun hesaplanan değerlerinin kütüğe yazdırılması. 1-exp(-x) fonksiyonu 0-10 aralığında 0.02 adımlarla hesaplanıp kütüğe yazılıyor #include <stdio.h> #include <math.h> #define ADIM 0.02 #define T0 0 #define TS 10 main() FILE *kp; double f, t; kp = fopen("sonuc.dat", "w"); if (kp == NULL) exit(1); for (t=t0; t<ts; t = t + ADIM) f = 1 - exp(-t); fprintf(kp, "%6.3f %12.8f\n", t, f); printf("%6.3f %12.8f\n",t, f); getch(); Örnek 5: Rehber defteri # include <stdio.h> # include <conio.h> # include <string.h> FILE *dosya1; FILE *dosya2;

char ad[20],soyadi[20],ads[20], tel[15]; char devam,s; void GIRIS(void); void DUZELT(void); void SIL(void); void LISTE(void); void ARA(void); void menu() textcolor(5); do gotoxy (10,5); printf("ana MENU\n"); gotoxy (10,6); printf("1-giris\n "); gotoxy (10,7); printf("2-duzeltme \n "); gotoxy (10,8); printf("3-silme \n "); gotoxy (10,9); printf("4-arama \n "); gotoxy (10,10);printf("5-LISTELEME\n "); gotoxy (10,11);printf("6-CIKIS\n"); s=getch(); switch(s) case '1': GIRIS(); break; case '2': DUZELT(); break; case '3': SIL(); break; case '4': ARA(); break; case '5': LISTE(); break; case '6': break; default: gotoxy(10,24);printf("yanlis deger girildi...\n"); break; while (s!='6'); ; void GIRIS() dosya1=fopen("rehber.dat","w+"); if (ferror(dosya1)) fclose(dosya1); dosya1=fopen("rehber.dat","w+"); do gotoxy(5,5);printf("kayit GiRiSi \n"); gotoxy(5,6);printf("------------\n");

gotoxy(5,7);printf("adi...:");scanf("%s",ad); gotoxy(5,8);printf("soyadi...:");scanf("%s",soyadi); gotoxy(5,9);printf("telefon...:");scanf("%s",tel); fprintf(dosya1,"%s\n",ad); fprintf(dosya1,"%s\n",soyadi); fprintf(dosya1,"%s\n",tel); fflush(stdin); /*btdin: Girişler klavyeden ekrana yapılacaktır*/ gotoxy(25,24);printf("devam edecek misiniz...:"); devam=getch(); while (clrscr(),devam!='h'); fclose(dosya1); ; /********************/ void DUZELT() do dosya1=fopen("rehber.dat","r+"); dosya2=fopen("yedek.dat","w+"); gotoxy(1,1);printf("duzeltilecek kaydin adi.:"); scanf("%s",ads); while (feof(dosya1)==0) fflush(stdin); fscanf(dosya1,"%s\n",ad); fscanf(dosya1,"%s\n",soyadi); fscanf(dosya1,"%s\n",tel); if (strcmp(ad,ads)==0) gotoxy(3,2);printf("adi\t:%s\n",ad); gotoxy(3,3);printf("soyad\t:%s\n",soyadi); gotoxy(3,4);printf("telefon\t:%s\n",tel); gotoxy(3,5);printf("===========================================\n"); gotoxy(3,9);printf("yen \n"); gotoxy(3,10);printf("adi...:");scanf("%s",ad); gotoxy(3,11);printf("soyadi...:");scanf("%s",soyadi); gotoxy(3,12);printf("telefon...:");scanf("%s",tel); fprintf(dosya2,"%s\n",ad); fprintf(dosya2,"%s\n",soyadi); fprintf(dosya2,"%s\n",tel); gotoxy(25,24);printf("devam edecek misiniz...:"); devam=getch(); while (clrscr(),devam!='h'); fclose(dosya1); fclose(dosya2); unlink("rehber.dat");

rename("yedek.dat","rehber.dat"); ; /******************/ void SIL() do dosya1=fopen("rehber.dat","r+"); dosya2=fopen("yedek.dat","w+"); gotoxy(1,1);printf("silinecek kaydin adi...:"); scanf("%s",ads); while (feof(dosya1)==0) fflush(stdin); fscanf(dosya1,"%s\n",ad); fscanf(dosya1,"%s\n",soyadi); fscanf(dosya1,"%s\n",tel); if(strcmp(ad,ads)==0) gotoxy(3,2);printf("adi\t:%s\n",ad); gotoxy(3,3);printf("soyadi\t:%s\n",soyadi); gotoxy(3,4);printf("telefon\t:%d\n",tel); gotoxy(3,10);printf("silinecek kayit bu mu?..:"); devam=getch(); if(devam=='e') continue; else fprintf(dosya2,"%s\n",ad); fprintf(dosya2,"%s\n",soyadi); fprintf(dosya2,"%s\n",tel); gotoxy(25,23);printf("silinecek kayit bulunamadi...:"); gotoxy(25,24);printf("devam edecek misiniz...: "); devam=getch(); while (clrscr(),devam!='h'); fclose(dosya1); fclose(dosya2); unlink("rehber.dat"); rename("yedek.dat","rehber.dat"); ; /****************/ void LISTE() int Z=5;

do dosya1=fopen("rehber.dat","r+"); while(feof(dosya1)==0) fflush(stdin); fscanf(dosya1,"%s\n",ad); fscanf(dosya1,"%s\n",soyadi); fscanf(dosya1,"%s\n",tel); gotoxy(1,3);printf("adi Soyadi Telefon "); gotoxy(1,4);printf("----------------------------------------------\n"); gotoxy(2,z); printf("%s\n",ad); gotoxy(18,z);printf("%s\n",soyadi); gotoxy(35,z);printf("%s\n",tel); Z++; if(z==22) printf("devam icin bir tusa basiniz"); devam=getch(); Z=5; continue; gotoxy(10,24);printf("liste Sonu. Devam icin bir tusa basiniz"); getch(); while (clrscr(),kbhit()); fclose(dosya1); void ARA() do dosya1=fopen("rehber.dat","r+"); dosya2=fopen("yedek.dat","wt"); gotoxy (1,1);printf("Aranan kaydin adi...: "); scanf("%s",ads); while (feof(dosya1)==0) fflush(stdin); fscanf(dosya1,"%s\n",ad); fscanf(dosya1,"%s\n",soyadi); fscanf(dosya1,"%s\n",tel); if (strcmp(ad,ads)==0) gotoxy(3,2);printf("adi\t:%s\n",ad ); gotoxy(3,3);printf("soyadi\t:%s\n",soyadi ); gotoxy(3,4);printf("telefon\t:%s\n",tel);

gotoxy(25,24);printf("devam edecek misiniz?...\n"); devam=getch(); while (clrscr(),devam!='h'); fclose(dosya1); ; /**********/ void main(void) menu(); 11. BAZI MATEMATİK FONKSİYONLARININ KULLANIMI #include "iostream.h" #include "math.h" #include "complex.h" void main () double aci,deger,x; deger=cos(m_pi); //aci radyan olarak verilir. cout<<deger; cout<<"\n hesaplama icin aci giriniz(derece)...:"; cin>>x; aci=(m_pi*x)/180.0; deger=cos(aci); cout<<"\n cos("<<x<<")="<<deger; deger=sin(aci); cout<<"\n sin("<<aci<<")="<<deger; aci=asin(deger); cout<<"\n arcsin("<<deger<<")="<<aci; complex r=complex(3.0,4.0); cout<<"\n Z="<<(complex(r)); cout<<"\n reel kismi="<<real(complex(r)); cout<<"\n sanal kismi="<<imag(complex(r)); cout<<"\n genlik="<<abs(complex(r)); aci=arg(complex(r)); aci=aci*180.0/m_pi; cout<<"\n Argumani="<<aci; x=16.0; cout<<"\n" <<x<<" karekoku="<<sqrt(x); aci=pow(x,2); cout<<"\n" <<x<<" karesi ="<<aci; x=3; aci=pow(10,x); cout<<"\n10 " <<x<<" kuvveti ="<<aci; cout<<"\ne=" <<exp(1.0);

KAYNAKLAR Şevki DEMİRBAŞ, Oğuz ÜSTÜN ve Nihat ÖZTÜRK, Beltek kursu ders notları, Gazi Üniversitesi Pektaş H., C Dili Kullanarak Bilgisayar Programlama, KOU EHM, Ders Notları. Sistem Programlama ve İleri C Uygulamaları.