C Programlamada Dosya İşlemleri Yapma

4.PNG

Bir dosya genellikle büyük miktarda veri içeren uygulamalar olarak kullanılır.
Bu tür uygulamalarda yaşanan sorunlar, çok fazla miktarda veriyi işlemek zaman aldığı için yönetmek zorlaşıyor. Program sonlandırıldığında veya bilgisayar kapatıldığında tüm veriler kaybedilebiliyor. Bu yüzden bilgileri kalıcı bir cihazda saklamak bir zorunluluk haline dönüşüyor.

Öncelikle aşağıdaki modların dosya işlemlerinde neler yaptığını inceleyelim.

-“r” Okumak için var olan dosyayı açar.
-“w” Yazmak için yeni bir dosya açar. Dosya adı mevcut değilse,  yeni dosya oluşturulur. Oluşturulacak dosya zaten varsa, içindekiler silinir.
-“a” Mevcut dosyayı ekler. Dosya adı mevcut değilse, oluşturur.
-“r +” Okuma ve yazma için var olan bir dosyayı açar. Yazmadan önce dosyanın okunacağını gösterir.
-“w +” Okuma ve yazma için yeni bir dosya açar. Geçerli dosya adında bir dosya varsa, o zaman yok edilir ve yeni bir dosya adı oluşturulur.
-“a +” Okuma ve ekleme için mevcut bir dosyayı açar. Onun akışı, dosya içeriğinin sonunda konumlandırılmıştır.

Herhangi bir dosyayı açmadan önce bir dosya tanıtıcısının oluşturulması gerekir.

FILE * fptr;

Herhangi bir işlem yapılmadan önce bir dosya açılmalıdır.
Dosyayı açmak için fopen() kullanılır.

fptr= fopen("dosyaadı.txt", "yapılacak işleme göre modlardan biri");

Örneğin oluşturduğum bir metin dosyasının program üzerinden okuma modunda açılmasını istiyor isem;

#include <stdio.h>

int main(){
FILE *fptr;
char filename[10];

printf("Enter file name:");
scanf("%s", filename);
fptr = fopen("a.txt", "r");
if (fopen("a.txt", "r")){
printf("File opened");
}
else{
printf("File can not open.");
}
getch();
return 0;
}
Ekran Alıntısı

oluşturduğum kodun bulunduğu dosyaya aynı dizinde bir .txt dosyası ekliyorum. Dosyamın adını “a.txt” veriyorum.

fptr= fopen(“a.txt”, “r”);  ile dosyamı okuma modunda açıyorum.

2

Eğer .txt dosyası farklı bir dizin üzerindeyse bulunduğu dizini belirterek tekrar açabilirim. Mesela a.txt dosyası C sürücüsü üzerinde olsaydı;

fptr = fopen("C://a.txt", "r");  //şeklinde  belirtebilirdim.

Yine başka bir örnek verelim, mesela dosyamı program üzerinden hem açmak hem de içeriği yazdırmak istiyorum diyelim;

#include <stdio.h>

int main(){
FILE *fptr;
char filename[10], c;

printf("Enter file name to open (Please write your filename):");
scanf("%s", filename);
fptr = fopen("words.txt", "r");
if (fptr == NULL)){
printf("Cannot open file \n");
exit(0);
}
c=fgetch(fptr);
while(c != EOF){
printf("%c", c);
c = fgetch(fptr);
}
fclose(fptr);
_getch();
return 0;
}

FileContents
while ((ch = fgetc(fptr)) != EOF){ printf("%c", ch);  ch=getc(fptr); } //EOF(End Of File)

Burada fgetc() dosyadaki verileri okuma yapacak. Kaynak kodu ile aynı dizine kaydedildikten sonra dosya içeriği de yazdıracaktır.

içerik