file system(dosyalama)

Verileri disk üzerinde saklayabilmek ve daha sonra bu verilere ulaşabilmek için dosyalama yöntemini kullanırız.

Bu yöntemle istediğimiz dosyanın istediğimiz yerine yazıp aynı şekilde dosyanın istediğimiz bölümünü de okuyabiliriz.

Verilerimizi kaydedeceğimiz iki dosya tipi vardır. (.txt ve .bin)

.txt uzantılı dosyada sakladığımız verileri görebeiliriz ancak .bin uzantılı dosyada sakladığımız verileri aynı haliyle göremeyiz çünkü verileri binary şekilde saklar.

Dosyalama yönteminde dosya açmanın çeşitli modları vardır:

r yalnız okuma işlemi için kullanılır.
w yalnız yazma işlemi için kullanılır.
a ekleme yapmak için kullanılır.
r+ Hem okuma hem de yazma işlemi için kullanılır.
w+ Hem okuma hem de yazma işlemi için kullanılır.
a+ Hem okuma hem de yazma işlemi için kullanılır.
Bir dosyayı nasıl açarız;

FILE *input;

input = fopen(“input.txt”,”w”);

Eğer dosya açılmadıysa başka problemlerle uğraşmadan direk hatanın kendisine gitmek için bir hata kontrolü yapabiliriz.

if(input == NULL)

{

printf(“Bu dosya açılamıyor.”);

exit(1);

}

Yukarıda dosya açmayı öğrendik ama açtığımız dosyaları aynı zamanda kapatmalıyız da.

Bu da;

fclose(input);

şeklindedir.

Bir örnek verecek olursak;

#include<stdio.h>
#include<conio.h>

int
main(void)
{
double salary;
FILE *input;

input = fopen("input.txt","w");

printf("Enter your salary ->");
scanf("%lf",&salary);
fprintf(input,"%f",salary);
fclose(input);

getch();
return (0);
}

Yukarıdaki kod input adında bir .txt dosyası oluşturacaktır ve ona kullanıcının girdiği değeri yazacaktır.

Aynı örneği .bin dosyalama yöntemi ile yapalım:

#include<stdio.h>
#include<conio.h>

int
main(void)
{
double salary;
FILE *input;

input = fopen("input.bin","wb");

printf("Enter your salary ->");
scanf("%lf",&salary);
fwrite(&salary,sizeof(double),1,input);
fclose(input);
fread(&salary,sizeof(double),1,input);

printf("%f",salary);

getch();
return (0);
}

Bu örnekte fwrite ve fread ile karşılaştık. Bunun nedeni binary dosyalarda veriyi

fwrite(pointer, size_of_component, num_of_values, fileptr) şeklinde yazıyoruz ve

fread(pointer, size_of_component, num_of_values, fileptr) şeklinde de okuyoruz.

NOT: Bir dosyadan birden fazla değer okunurken

while(fread(pointer, size_of_component, num_of_values, fileptr) != 0);

yazmamız yeterlidir.

Bu yazı C, Genel kategorisine gönderilmiş ve , , , , ile etiketlenmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir