Bu makalede C++ programlama dilinde dosya işlemleri yapmak için farklı fonksiyonlar kullanıldığından bahsedilmektedir Dosya açma, dosya erişim modları belirleme, dosyaya yazma ve dosyadan okuma işlemleri gibi işlemler fonksiyonlar kullanılarak gerçekleştirilir Dosya adı belirlerken uzantı da belirtilmeli, dosyanın bulunacağı konum da belirtilmelidir Dosya adı belirleme işleminde tırnak, köşeli parantez veya özel karakterler kullanılmamalıdır Dosya açma işlemi için kullanılan fopen fonksiyonunun dosya adı ve dosya erişim modu parametreleri kullanılır Dosya işlemi bittikten sonra dosya kapatılmalıdır Dosya adını belirleme işlemi yaparken, dosya adının esnek ve anlaşılır olması önemlidir
C++ programlama dilinde dosya işlemleri yapmak için farklı fonksiyonlar kullanılır. Bu fonksiyonlarla dosyalar açılır, veriler okunur ya da dosyaya yazılır. Bu makalede C++ programlama dilinde fonksiyonlar kullanarak dosyalara nasıl işlem yapabileceğimizi öğreneceğiz.
Fonksiyonlar, dosyalarla işlem yaparken oldukça yararlıdır. Dosyalar açılırken, dosya erişim modları belirlenir. Dosyaya veri yazma işlemleri ve dosyadan veri okuma işlemleri de fonksiyonlar tarafından gerçekleştirilir. Dosya işlemi tamamlandıktan sonra dosyalar kapatılmalıdır. Tüm bu işlemleri yapabilmek için farklı fonksiyonlar kullanılmaktadır.
Bu makalede, dosyalarla işlem yapmak için kullanabileceğimiz farklı fonksiyonlar hakkında bilgi edineceksiniz. Fonksiyonların kullanımı ve parametreleri örneklerle anlatılacaktır. Dosya oluşturma işlemleri, dosya erişim modları, dosyaya veri yazma işlemleri, dosyadan veri okuma işlemleri ve dosya kapama işlemleri detaylı bir şekilde açıklanacaktır.
Dosya Oluşturma İşlemleri
C++ programlama dilinde dosya işlemleri yapmak için farklı fonksiyonlar mevcuttur. Dosya oluşturma işlemleri için kullanabileceğimiz bazı önemli fonksiyonlar vardır. Bu fonksiyonlar dosya oluşturma, dosya yazma ve dosya okuma işlemleri yapmak için kullanılır.
Dosya oluşturma işlemi yapmak için fopen() fonksiyonu kullanılır. Bu fonksiyon, dosya açma işlemleri için kullanılır ve dosya adı ve dosya erişim modunun belirtilmesi gereklidir. Dosya adı belirtilirken, dosyanın bulunacağı konum da belirtilmelidir. Dosya erişim modu, dosyanın nasıl açılacağını belirler ve dosyaya ne tür işlemler yapılacağını belirler.
Fonksiyon Adı | Kullanım Amacı |
---|---|
fopen() | Dosya açma işlemleri |
fwrite() | Dosyaya veri yazma işlemleri |
fread() | Dosyadan veri okuma işlemleri |
Dosya oluşturma işlemleri yaparken dikkat etmemiz gereken bazı hususlar vardır. Dosya açma işlemi yaparken, dosyanın var olup olmadığının kontrol edilmesi gereklidir. Dosya oluşturulmadan önce, dosya adının belirlenmesi gereklidir. Dosya adı belirlenirken dikkat edilmesi gereken bir diğer husus, dosyanın uzantısının belirtilmesidir. Dosya uzantısı, dosyanın türünü belirler ve dosyanın okunup yazılabilirliği gibi işlemleri etkiler.
- Dosya adı belirlenirken uzantı da belirtilmelidir
- Dosya adı belirlerken dosyanın bulunacağı konum da belirtilmelidir.
fopen() Fonksiyonu
C++ programlama dilinde bir dosya oluşturmak veya bir dosyayı açmak için kullanabileceğimiz fopen() fonksiyonunun kullanımı oldukça basittir. Bu fonksiyonun kullanımı için iki adet önemli parametre vardır. İlk olarak dosya adı belirtilmelidir. Dosya adı, açılacak dosyanın tam adı veya yolunu içermelidir. İkinci önemli parametre ise dosya erişim modudur. Dosya erişim modu, dosyanın açılma amacına göre belirlenir.
Örneğin, bir dosyanın yazılması için açılması gerekiyorsa "w" kullanılabilir. Eğer dosya sadece okunacaksa "r" kullanılır. Eğer bir dosya hem okunacak hem de üzerine yazılacaksa "w+" kullanılabilir. Yani dosya erişim modları, dosyanın amaçlarına göre belirlenir ve kullanıcı bundan haberdar olarak fopen() fonksiyonunu kullanmalıdır.
Dosya Erişim Modları | Anlamı |
---|---|
r | Okuma modu. Dosya sadece okunur. |
w | Yazma modu. Eğer dosya yoksa, yeni bir dosya oluşturulur. Eğer dosya varsa, dosya içeriği silinir ve yeniden yazılır. |
a | Ekleme modu. Eğer dosya yoksa, yeni bir dosya oluşturulur. Eğer dosya varsa, dosya sonuna eklemeye izin verir. |
r+ | Hem okuma hem de yazma modu. |
w+ | Hem okuma hem de yazma modu. Eğer dosya yoksa, yeni bir dosya oluşturulur. Eğer dosya varsa, dosya içeriği silinir ve yeniden yazılır. |
a+ | Hem okuma hem de ekleme modu. Eğer dosya yoksa, yeni bir dosya oluşturulur. Eğer dosya varsa, dosya sonuna eklemeye izin verir. |
Örneğin, bir dosya oluşturmak için şu kod bloğu kullanılabilir:
FILE *dosya = fopen("ornek.txt", "w");
Bu kod bloğu, "ornek.txt" adında yeni bir dosya oluşturur. Dosya erişim modu "w" olduğundan, dosya sadece yazılabilir. Aynı şekilde bir dosyayı okumak için şu kod bloğu kullanılabilir:
FILE *dosya = fopen("ornek.txt", "r");
Bu kod bloğu, "ornek.txt" adındaki dosyayı açar. Dosya erişim modu "r" olduğundan, dosya sadece okunabilir. Dosya işlemleri bittikten sonra, dosya kapatılmalıdır. Dosya kapatılmadan önce, dosya erişimi kilitlidir ve dosya üzerinde değişiklik yapmak mümkün olmayabilir. Dosya kapatmak için kullanılabilecek fclose() fonksiyonu ise bir sonraki başlıkta anlatılacaktır.
Dosya Adının Belirtilmesi
Dosya oluşturmak için fopen() fonksiyonunu kullanırken dosya adını belirlememiz gerekmektedir. Dosya adı, dosyanın içeriğine veya kullanım amacına göre belirlenebilir. Dosya adının esnek ve anlaşılır olması önemlidir.
Dosya adı belirtilirken dikkat edilmesi gereken bazı hususlar bulunmaktadır. Örneğin, dosya adının köşeli parantez, tırnak veya özel karakterler içermemesi gerekmektedir. Dosya adının tamamının veya bir kısmının rezerve edilmiş anahtar kelimelerle aynı olmamasına dikkat edilmesi gerekmektedir.
Dosya adı belirleme işlemi yapmak için kullanabileceğimiz bazı örnekler şunlardır:
Dosya Adı | Açıklama |
---|---|
dosya.txt | Bir metin belgesi için dosya adı |
resim.jpg | Bir resim dosyası için dosya adı |
veritabani.csv | Bir veri tabanı dosyası için dosya adı |
Dosya adı belirleme işleminde kullanabileceğimiz bazı özel karakterler şunlardır:
- slash (/) - dizinleri belirtmek için
- backslash (\) - Windows dosya yollarında kullanılır
- dot (.) - dosya adı ile dosya uzantısını ayırmak için kullanılır
- underscore (_) - dosya adı içindeki boşlukları yerine koymak için kullanılır
Dosya Erişim Modları
Dosya erişim modları, dosyanın nasıl açılacağını ve okunacağını belirler. Bu modlar dosyanın açılma amacına göre belirlenir. C++ programlama dilinde dosya erişim modları aşağıdaki gibi kullanılır:
Erişim Modu | Amaç |
---|---|
"r" | Dosyayı okumak için açar. Dosya yok ise hata verir. |
"w" | Dosyayı yazmak için açar. Dosya yok ise oluşturur. |
"a" | Dosyaya ekleme yapmak için açar. Dosya yok ise oluşturur. |
"r+" | Dosyayı hem okumak hem de yazmak için açar. Dosya yok ise hata verir. |
"w+" | Dosyayı hem okumak hem de yazmak için açar. Dosya yok ise oluşturur. |
"a+" | Dosyaya ekleme yapmak ve okumak için açar. Dosya yok ise oluşturur. |
Bu erişim modları, dosyanın işlenme şeklini belirler. Dosya açma işlemi sırasında kullanılan bu modlar, dosyaya yapılacak işlemler için oldukça önemlidir. Eğer dosya açılırken yanlış bir erişim modu kullanılırsa, beklenmeyen bir sonuç ile karşılaşılabilir. Bu nedenle, doğru erişim modunun kullanımı, dosya işlemlerinde oldukça önemlidir.
fwrite() Fonksiyonu
C++ programlama dilinde dosyaya veri yazmak için kullanılan fwrite() fonksiyonu oldukça basit bir fonksiyondur. fwrite() fonksiyonu, dosyaya veri yazarken veriyi tampona alır ve tamponu dosyaya yazar. fwrite() fonksiyonu genellikle binary dosya işlemlerinde kullanılır.
fwrite() fonksiyonunun kullanımı oldukça basittir. İlk parametre olarak yazılacak verinin adresi, ikinci parametre olarak yazılacak verinin tek seferde kaç byte olduğu, üçüncü parametre olarak ise dosya göstericisi verilir.
fwrite() Fonksiyonu Parametreleri | Açıklama |
---|---|
veri | Dosyaya yazılacak verinin bellekteki adresi |
boyut | Dosyaya yazılacak verinin boyutu (byte cinsinden) |
adım | Dosyaya bellek bloğundan kaç adım atlayarak yazılacağı (genellikle 1 olarak belirtilir) |
dosya_göstericisi | Dosya göstericisi (dosya açma işleminde elde edilen değerdir) |
Örneğin, bir binary dosyaya kullanıcı adı ve şifre yazmak için şu kod bloğu kullanılabilir:
char kullanici_adi[20] = "kullanici";char sifre[20] = "sifre";FILE *dosya_göstericisi;dosya_göstericisi = fopen("veriler.dat", "wb");fwrite(kullanici_adi, sizeof(kullanici_adi), 1, dosya_göstericisi);fwrite(sifre, sizeof(sifre), 1, dosya_göstericisi);fclose(dosya_göstericisi);
Bu örnekte, kullanıcı adı ve şifre sırasıyla belleğe yazılır ve fwrite() fonksiyonu kullanılarak veriler.dat adında bir binary dosyaya yazılır. Dosyanın yazım modu "wb" (binary yazma modu) olarak belirtilir ve dosya açma işlemi fopen() fonksiyonu ile yapılır. Dosya işlemi tamamlandıktan sonra fclose() fonksiyonu ile dosya kapatılır.
Dosya Okuma İşlemleri
Dosya oluşturma işlemlerinin yanı sıra, C++ programlama dilinde dosya okuma işlemleri için de farklı fonksiyonlar kullanabiliriz. Bu fonksiyonlar sayesinde dosyalardan veri okuyabilir ve bu verileri programımızda kullanabiliriz.
En çok kullanılan dosya okuma fonksiyonu, fread() fonksiyonudur. Bu fonksiyon, dosyadan veri okumak için kullanılır ve tüm dosya içeriğini okuyabilir. Dosyadan kaç byte okunacağı, okunan byte sayısının hangi adresteki değişkene yazılacağı ve dosya göstericisinin konumunu belirleyen bir fseek() fonksiyonunun kullanımı gereklidir.
Fonksiyon | Açıklama |
---|---|
fread() | Dosyadan belirli bir miktarda veri okumak için kullanılır. |
fgets() | Dosyadan bir satır okumak için kullanılır. |
fgetc() | Dosyadan tek bir karakter okumak için kullanılır. |
Bunun yanı sıra, fgets() fonksiyonu da dosya okuma işlemleri için sıklıkla kullanılır. Bu fonksiyon dosyadan sadece bir satır okuyabilir. Dosyada kaçıncı satırı okuyacağı, okunan satırın hangi adresteki değişkene yazılacağı ve dosya göstericisinin konumunu belirleyen bir fseek() fonksiyonunun kullanımı gereklidir.
fgetc() fonksiyonu da dosya okuma işlemleri için kullanılabilir. Bu fonksiyon, dosyadan bir karakter okur. Dosya göstericisinin konumunu belirleyen bir fseek() fonksiyonunun kullanımı gereklidir. Bu fonksiyonun kullanımı özellikle dosyadan tek karakter okuma işlemleri için uygundur.
fread() Fonksiyonu
Dosyadan veri okuma işlemi için kullanılan fread() fonksiyonu, dosyadan okuma yaparak veriyi bir bellek alanına aktarır. Bu fonksiyonun kullanımı oldukça basittir. İkinci parametrede belirtilen boyutta bir bellek bloğu oluşturulur ve dosyadan bu bloğa kadar olan veri okunur.
Fonksiyonun imzası aşağıdaki gibidir:
size_t fread(void *buffer, size_t size, size_t count, FILE *stream);
Bu imzaya göre, fonksiyon dört adet parametre alır. İlk parametre bellek bloğunun başlangıç adresini gösterir. İkinci parametrese okunacak her bir veri öğesinin boyutunu belirler. Üçüncü parametre ise okunacak veri öğesi sayısını belirler. Son parametre ise dosya işaretçisini gösterir.
Fonksiyon geriye okunan veri öğesi sayısını döndürür. Eğer okuma işlemi sonda ise, geriye kalan veri öğesi sayısı döndürülür. Ayrıca, okunan veriler bellek bloğuna kopyalanır ve bu bellek bloğu içinde saklanır.
Örnek olarak, bir dosyadan tampon boyutu kadar veri okuyup ekrana yazdırmak için aşağıdaki kod kullanılabilir:
#define TAM_PUFFER_BOYUT 128int main(){ FILE *fp; char puffer[TAM_PUFFER_BOYUT];
fp = fopen("ornek.txt", "r"); if(fp == NULL) { perror("Dosya açılırken hata oluştu"); return(-1); } while(fread(puffer, TAM_PUFFER_BOYUT, 1, fp) == 1) { printf("%s", puffer); }
fclose(fp); return 0;}
Bu örnekte fread() fonksiyonu dosyanın tamamını okumak yerine, tampon boyutu kadar veri okuyarak ekrana yazdırır. Okuma işlemi, dosyanın sonuna kadar devam eder.
fgets() Fonksiyonu
C++ programlama dilinde dosyalardan veri okumak için kullanabileceğimiz farklı fonksiyonlar mevcuttur. fgets() fonksiyonu, bir dosyadan okunacak karakter sayısını belirler ve dosyadan bu adette karakter okur. Daha sonra bir sonraki satır veya en son okunan karakterden sonraki satırı okumaya devam eder.
fgets() fonksiyonunun kullanımı için ilk olarak dosyanın açılması gerekir. Daha sonra okunacak karakter sayısını belirlemek için bir değişkene atama yapılır ve fgets() fonksiyonu bu değişkeni kullanarak dosyadan okuma yapar. Okunan veri bir karakter string'inde saklanır ve işlem sonucunda dosyanın kapanması sağlanır.
Kullanımı | Açıklama |
---|---|
fgets(char *str, int n, FILE *fp) | Dosyadan n kadar karakter okuyarak str pointers'ı içine atar. |
Aşağıda fgets() fonksiyonunun kullanımına dair bir örnek gösterilmiştir:
#include <stdio.h> int main () { FILE *dosya; char veri[100]; dosya = fopen("ornek.txt", "r"); if(dosya == NULL) { perror("Dosya açılırken hata oluştu"); return(-1); } if( fgets (veri, 100, dosya)!=NULL ) { printf("%s",veri); } fclose(dosya); return 0;}
- Bu örnek kod parçası, "ornek.txt" dosyasını açar ve dosyadan ilk 100 karakteri okurlar.
- fgets() fonksiyonu okuma işlemi tamamlandıktan sonra dosyayı kapatır.
C++ programlama dilinde dosya işlemleri için kullanılabilecek fonksiyonlar oldukça fazladır. Özetle, dosya oluşturma, okuma ve yazma işlemleri yapabilmek için fopen(), fwrite(), fread(), ve fgets() fonksiyonları kullanılabilir. Yapılacak işleme göre farklı fonksiyonlar kullanılabilir ve dosya işlemleri açıklanacakları şekilde kullanıldığı takdirde oldukça basittir.
Dosya Kapama İşlemleri
Dosya işlemlerinde, dosyaların açılması kadar kapatılması da önemlidir. Dosyaların açık kalması, programın zamanla hafızayı doldurmasına ve hatta veri kaybına yol açabilir. Bu nedenle programcıların dosya işlemlerini tamamladıktan sonra dosyaları kapatması önerilir.
Dosya kapatma işlemi için C++ programlama dilinde kullanılan fonksiyon "fclose()" fonksiyonudur. Bu fonksiyon, dosya işlemi tamamlandığında kullanılır ve dosyanın kapatılmasını sağlar.
Bununla birlikte, bazen dosyaların kapatılması gerekmeyebilir, özellikle program dosyalarını açıp kapatıp işlemesiyse bu durumda dosyalar otomatik olarak kapanacaktır. Ancak, dosyada değişiklik yapıldıysa ya da işlem başarısız olduysa, dosyanın manuel olarak kapatılması önerilir.
Bununla birlikte, dosyaların kapatılmasının yanı sıra, bir diğer dosya kapatma konusu "dosya tanıtıcılarının" atılarak kaynakların serbest bırakılmasıdır. Bu yöntem özellikle büyük projelerde daha önemlidir ve kod kalitesini arttırır.
fclose() Fonksiyonu
Dosya işlemleri yapıldıktan sonra dosyaların kapatılması gerekmektedir. Bu işlem dosya kaynaklarının serbest bırakılmasını sağlar ve sistem kaynaklarının da verimli kullanılmasını sağlar. Dosya kapatma işlemi için kullanabileceğimiz bir fonksiyon fclose() fonksiyonudur.
fclose() fonksiyonu, bir dosyayı kapatmak için kullanılır. Dosya kapatılmadan önce tüm yazma veya okuma işlemlerinin tamamlanması gereklidir. Dosya kapatmak için belirtilen dosya göstericisi geçersiz hale getirilir ve hafıza kaynakları serbest bırakılır.
fclose() fonksiyonu, "stdio.h" başlık dosyasında tanımlanmıştır ve aşağıdaki şekilde kullanılır:
Söz Dizimi | Açıklama |
---|---|
fclose(FILE* dosya_göstericisi) | Dosya göstericisi belirtilen dosyayı kapatır. İşlem başarılı ise 0, değilse EOF döndürür. |
fclose() fonksiyonunun önemi, dosyalar tarafından kullanılan sistem kaynaklarını serbest bırakarak programın daha verimli çalışmasını sağlamaktır. Ayrıca dosya kapatma işlemi yapılmadan önce tüm dosya işlemlerinin tamamlanmış olması gerektiğinden bu fonksiyonun kullanımı önemlidir. Dosya kapatma işlemi yapılması gerekmeyen ama yapılmayan dosyalar, programın daha yavaş çalışmasına ve hatta sistem kaynaklarının tükenmesine neden olabilir.