DOSYA LEMLER Dosya Ama ve Kapama Bir dosyaya
DOSYA İŞLEMLERİ
Dosya Açma ve Kapama Bir dosyaya okuma/yazma yapmak için onun açılması gerekir. Dosya açmak için fopen(), kapatmak için fclose() fonksiyonu kullanılır. Bu fonksiyonlar stdio. h başlık dosyasında tanımlanmıştır.
Genel olarak, dosya açma kapama adımları şu şekildedir: FILE *dosya; /* dosya göstericisi */ dosya = fopen(const char dosya_adı, const char mod); . . . dosya işlemleri. . . fclose(dosya); Burada FILE, stdio. h içerisinde bildirilmiş bir yapıdır. mod ile açılacak olan dosyanın ne amaçla açılacağı belirleni
Tablo 16. 1: Dosya açma modları Açılış Modu İşlem Türü r Salt okunur (read only). Dosyanın açılabilmesi için önceden oluştrulmuş olması gerekir. Bu modda açılmş olan bir dosyaya yazma yapılamaz. w Yalnızca yazma (write only). Dosya diskte kayıtlı olsun veya olamsın dosya yeniden oluşturulur. Bu modda açılmış olan bir dosyadan okuma yapılamaz. a Ekleme (append). Kayıtlı bir dosyanın sonuna veri eklemek için açılır. Bu modda açılmış olan bir dosyadan okuma yapılamaz. r+ Okuma ve yazma. Bu modda açılmış olan bir dosyanın daha önce varolması gerekir. w+ Okuma ve yazma. Bu modda açılmış olan bir dosya var olsun veya olmasın dosya yeniden oluşturulur. a+ Okuma ve yazma. Kayıtlı bir dosyanın sonuna veri eklemek için açılır.
Dosya Fonksiyonları Fonksiyon Görevi fopen() Dosya oluşturur, açar Dosyayı kapatır fclose() putc() getc() feof() fprintf() fscanf() Dosyaya bir karakter yazar Dosyadan bir karakter okur Dosya sonuna gelindiğini sorgular Dosyaya formatlı veri yazar Dosyadan formatlı veri okur fputs() Dosyaya katar yazar fgets() fwrite() fread() Dosyadan katar okur Dosyaya dizi yazar Dosyadan dizi okur
Dosyaya Sadece Bir Karakterin Yazdırılması #include<stdio. h> char metin[50]="Yildiz Teknik"; int main() { FILE *dg; char *p; p=metin; dg=fopen("test. txt", "w"); while(*p) { fputc(*p, dg); p++; } }
Dosyadan Bir Karakterin Okunması #include<stdio. h> int main() { FILE *dg; char x; dg=fopen("test. txt", "r"); x=getc(dg); fclose(dg); printf("%c", x); }
Dosyadan Bir Karakterin Okunması #include<stdio. h> int main() { FILE *dg; char x[80]; int i; dg=fopen("test. txt", "r"); for(i=1; i<51; i++) x[i]=fgetc(dg); fclose(dg); for(i=1; i<51; i++) printf("%c", x[i]); }
Dosyaya Bir Karakter Dizisinin Kaydedilmesi #include<stdio. h> int main() { char metin[]="Yildiz Teknik Üniversitesi"; FILE *dg; dg=fopen("test. txt", "w"); fputs(metin, dg); fclose(dg); }
Dosyadan Karakter Dizisinin Okunması #include<stdio. h> char x[80]; int main() { FILE *dg; dg=fopen("test. txt", "r"); fgets(x, 80, dg); fclose(dg); printf("%s", x); }
Dosyaya Biçimlendirilmiş Veri Kaydetme #include<stdio. h> int main() { FILE *dosya int i; dosya=fopen("test. txt", "w"); fpirntf(dosya, "%3 d", i); fclose(dg); }
Dosyaya Biçimlendirilmiş Veri Okuma #include<stdio. h> int main() { FILE *dosya; int i; dosya=fopen("test. txt", "r"); while(fscanf(dosya, "%03 d", &i)!=EOF) printf("%d n", i); fclose(dosya); }
ÖRNEK: Programın çalıştığı dizinde, “deneme. txt” isimli bir dosya açarak, bu dosyanın içerisine, birden yüze kadar olan sayıları bastıran bir kod yazınız. #include <stdio. h> int main(){ FILE *fp ; fp = fopen("deneme. txt", "w"); for(int i = 0; i<100; i++) { fprintf(fp, "%d", i); } fclose(fp); }
Soru 5 (20 p) a) Çalışma dizininde mevcut bulunan "ornek 1. txt" dosyasını bayt okuyarak okunan baytları sıra ile "ornek 2. txt" dosyasına yazan C kodunu yazınız. "ornek 2. txt" dosyası C programı içinde oluşturulacaktır. b) Bu işlem sonunda "ornek 1. txt" dosyasının boyutunu ekrana yazınız.
#include <stdio. h> main() { FILE *fptr 1, *fptr 2; char ch; int S=0; fptr 1=fopen("ornek 1. txt", "r"); fptr 2=fopen("ornek 2. txt", "w"); do { ch=fgetc(fptr 1); if (!feof(fptr 1)) { fputc(ch, fptr 2); S++; } }while(!feof(fptr 1)); fclose(fptr 1); fclose(fptr 2); printf("Dosya boyutu %d", S); getchar(); }
Bilindiği üzere şifreleme çok eski zamanlara dayanmaktadır. En ilkel şifreleme tekniği ise metin içerisindeki harfleri 1 sağa kaydırarak yapılmaktadır. Bu bilgiye göre kendisine gönderilen bir dosya içerisindeki İngiliz karakter setinde bulunan harfleri bir sağa kaydırarak (‘a’ karakteri ‘b’, ‘b’ karakteri ‘c’, …. , ‘z’ karakteri ise ‘a’ olacak şekilde) şifreleyecek bir C programı yazınız. Örnek olarak karakter dizisi “Gelisim” ise bu karakter dizisinin “Hfmjtjn” olması gerekiyor
#include <stdio. h> #include<string. h> void sifrele(char cumle[]) { int i, k; k=strlen(cumle); for(i=0; i<k; i++) { if('A' <=cumle[i] && cumle[i] < 'Z' || 'a'<=cumle[i] && cumle[i]<='z') cumle[i]+=1; else if (cumle[i]=='Z') cumle[i]='A'; else if (cumle[i]=='z') cumle[i]='a'; } }
int main() { char yazi[80]; FILE *oku=fopen("yazi. txt", "r"); FILE *yaz=fopen("sifre. txt", "w"); while(!feof(oku)) { fgets(yazi, 80, oku); sifrele(yazi); fprintf(yaz, "%s", yazi); } fclose(oku); fclose(yaz); FILE *yeni=fopen("sifre. txt", "r"); printf("Sifreli dosyan"); while(!feof(yeni)) { fgets(yazi, 80, yeni); printf("%sn", yazi); } fclose(yeni); }
Dosyadan struct ile veri okumak #include <stdio. h> #include <conio. h> #include <stdlib. h> #include <string. h> struct ogrenci{ int no; char ad[20]; int vize; int final; }; int main(){ FILE *dg = fopen("ogrenci. txt", "r"); struct ogrenci a; while (!feof(dg)) { fscanf(dg, "%d %s %d %d", &a. no, a. ad, &a. vize, &a. final); printf("%d %s %d %d", a. no, a. ad, a. vize, a. final); } return 0; }
Ekran Görüntüsü #include<stdio. h> #include<string. h> void f(char s 1[], char s 2[]) { s 2[0]=s 1[0]; s 2[0]='. '; int j=2, i, k=strlen(s 1); for(i=1; i<k; i++) { if(s 1[i]==' ') { s 2[j]==s 1[i+1]; s[j+1]='. '; j+=2; } } s 2[j]='