DOSYA İŞLEMLERİ
Dosyanın açılması Dosya işlemi yapabilmek için önce dosyanın açılması gerekir FILE * fopen (char * filename, char * mode) fopen fonksiyonun 1. parametresi dosya ismi 2. Parametresi ise dosya işlem türüdür.
fopen fonksiyonu dosyanın açılmaması durumunda NULL değerine geri döner Dosyanın açılıp açılmadığı mutlaka geri dönüş değerine bakılarak kontrol edilmelidir.
dosya açma örnekleri FILE * hFile; hFile = fopen( dosya_ismi, "r"); if (hFile == NULL) { // hata, dosya bulunamadı } else { // dosyayı kapat fclose(hFile); }
dosya açma örnekleri FILE *fp; fp=fopen("c:\\test.txt", "r"); char filename[80]="c:\\my_file.txt"; if((pfile = fopen(filename, "r")) == NULL){ printf(" %s dosyası acilamadi", filename); return -1; }
dosya kapatma örneği FILE * hFile; if ((hFile = fopen( dosya_ismi, “w") == NULL) { printf(“ dosya açılamadı\n”); exit(1); } ….. fclose(hFile);
r w a r+ w+ a+ Açılış Modu İşlem türü Yalnız okuma Dosya diskette olsada olmasada yeniden yaratır a Var olan dosyanın sonuna ekleme yapar r+ Hem okuma hem yazma yapar. Daha once DOSYA AÇILMIŞ OLMALI w+ Hem okuma hem yazma yapar. Önce açılması gerekmez a+ Hem okuma hem yazma yapar. Var olan dosyanın sonuna ekleme yapar
Dosyadan bir karakter okuyup yazan fonksiyonlar int fgetc(FILE *fp) Fonksiyonun geri dönüş degeri, okuma başarılı ise okunan karakter ile, başarısız ise EOF (-1) değeri ile geri döner.
Dosya Sonu Tespiti Dosya sonuna gelip gelmediği feof( ) fonksiyonu ile tespit edilir. Fonksiyon dosya sonuna geldiğinde geri dönüş değeri “1” değerini alır. Eğer dosya sonuna ulaşmamışsa “0” değerine geri döner
Dosya Sonu Tespiti while(!feof(fp)) { if(fgets(str, 126, fp)) printf("%s", str); }
#include <stdio.h> #include <stdlib.h> int main() { FILE *fp; char kaynak_liste[40]="sinifliste.txt"; char str[128]; if((fp = fopen(kaynak_liste, "r"))==NULL) { printf("Dosya acilamadi.\n"); exit(1); } while(!feof(fp)) { if(fgets(str, 126, fp)) printf("%s", str); fclose(fp); return 0; fgetsornek.c Bir dosyanın icerigini Ekrana yazdırır. fgetsornek.c
Bir dosyadan diğer bir dosyaya kopyalama yapıldı. #include <stdio.h> int main () { FILE *kaynak, *hedef; char kaynak_dosya[40]="sinifliste.txt"; char hedef_ dosya[40] ="kopyaliste.txt"; char ch; if((kaynak = fopen(kaynak_dosya, "r")) == NULL){ printf("Kaynak dosya acilamadi... "); exit(1); } if((hedef = fopen(hedef_dosya, "w")) == NULL){ ch = fgetc(kaynak); while (ch != EOF) fputc(ch, hedef); printf("dosya kopyalandi\n"); fclose (kaynak); fclose (hedef); return 0; Bir dosyadan diğer bir dosyaya kopyalama yapıldı.
fgets ve fputs fonksiyonları char *fgets(char *line, int maxline, FILE *fp) Dosyadan bir dizi karakter okumak için kullanılır. int fputs(char *line, FILE *fp) Dosyaya bir dizi karakter yazmak için kullanılır. fgetsornek1.c fgetsornek2.c örnekleri incele
Dosya işlemleri fonksiyonları fprintf() fscanf() fgets() fputs() fopen() fclose() getc() ungetc() putc() fgetc() fputc() feof() fread() fwrite() ftell() fseek() rewind() fflush()