Temel C Programlama -50- fprintf() ve fclose() ile En Basit Dosya Uygulaması

Önceki başlıkta fopen() fonksiyonu ile dosya açmayı anlatmış ve buna oluşturduğumuz dosya işaretçisini nasıl eklediğimizi göstermiştik. Şimdi oluşturduğumuz dosya işaretçisi vasıtasıyla dosya üzerinde değişiklik yapalım ve bunu kaydedelim. Bunun için fopen() fonksiyonunun yanında iki fonksiyona daha ihtiyacımız olacaktır. Bunlar fprintf() ve fclose() fonksiyonlarıdır.

fprintf() fonksiyonu

Bu fonksiyon dosyaya formatlı biçimde karakter dizisi verisi yazmak için kullanılır. Formatlama aynı printf() fonksiyonunda olduğu gibidir. Fakat bu sefer ekran yerine dosyaya veri yazılmaktadır. İşleyiş bakımından sprintf() fonksiyonuna da benzemektedir. Fonksiyonun prototipi şu şekildedir.

int fprintf ( FILE * stream, const char * format, ... );

Burada FILE * stream olarak belirtilen dosya akışıdır. Bizim fopen() ile açıp dosya işaretçisine eklediğimiz dosyayı buraya yazmamız gereklidir. const char* format ile belirtilen karakter dizisi sabiti ise printf()’den bildiğiniz üzere iki tırnak arasına yazılan metin ve format bilgilerini içermektedir. Sonrasında ise aynı printf()’de olduğu gibi formatları yazarak fonksiyonu bitiririz. Yine değer olarak int tipinde toplam yazılan bayt sayısını bize vermektedir. Formatları tekrar tekrar buraya yazmıyorum merak edenler printf() fonksiyonunu açıkladığım kısma tekrar bakabilir.

fclose() fonksiyonu

fprintf() gibi stdio.h başlık dosyasında yer alan fclose() fonksiyonu açılmış dosyayı kapatır ve akıştan keser. Bu durumda yazılmamış ve okunamamış tampon veri de ortadan kaybolmaktadır. Biz fopen() ile açtığımız dosyayı işimiz bittikten sonra fclose() ile kapatmamız gerekir. Fonksiyonun prototipi şu şekildedir.

int fclose ( FILE * stream );

Görüldüğü gibi FILE *stream kısmına FILE tipindeki dosya işaretçisinin adını yazıyoruz ve bağlı olduğu dosyayı kapatıyor. Şimdi öğrendiğimiz bu üç fonksiyon ile basit bir uygulama yapalım. Uygulamamız bir dosya oluşturacak, bu dosyaya veri yazacak ve bu dosyayı kapatacaktır. Derslerin en başında yaptığımız “Merhaba Dünya!” programını dosyalar vasıtasıyla yapalım.

#include <stdio.h>

int main(int argc, char** argv) {
	FILE *dosya;
	dosya = fopen ("dosya.txt", "w");
	fprintf(dosya, "Merhaba Dunya");
	fclose(dosya);
	return 0;
}

Programı çalıştırdığımızda konsol ekranında herhangi bir çıkış vermese de .exe dosyasının olduğu klasörde bir dosyanın meydana geldiğini fark edeceksiniz. Bunu notepad veya diğer bir metin işlem programı ile açtığımızda içinde “Merhaba Dunya” yazısını göreceksiniz.

Bunca zaman ekrana yazdırdığımız değerler silinip gidiyordu. Ama dosya öyle değildir. Artık sonuçları dosyaya yazdırmayı ve bunu kalıcı hale getirmeyi biliyorsunuz. Basit görünse de bu üç fonksiyonla artık programlarınızın çıktısını kalıcı hale getirmeyi öğrendiniz. Üstelik bu program çıktılarını farklı programlar da okuyup yorumlayabilir. Bazen Excel gibi programlarla bu verileri grafik haline getirip görselleştirebilir veya diğer programlar tarafından kullanılabilir hale getirebilirsiniz.

Bu yazıda olabilecek en basit dosya uygulamasını yapsak da ilerleyen uygulamalar biraz daha teferruatlı olduğu için kafanızı karıştırabilir. Bu arada bütün dosyalarla ilgili fonksiyonları stdio.h başlık dosyasında bulabilirsiniz. Şimdilik üç tanesini anlatsak da ilerleyen başlıklarda devamını anlatacağız.

Last updated