C’de dosyaya yeni kayıt ekleyen program:
C programlamada dosyalama işlemlerinin ilk örneği olan “C’de dosyaya yeni kayıt ekleyen program” daki amaç yeni bir dosya yaratmak ve bu dosyanın içerisine veriyi yazdırmaktır. Programda kullanıcıdan veri girişi yapılmaya devam edilsin mi diye soracak ve istenilen komut girildiğinde veri girişi yapılmaya devam etmeyi amaçlıyoruz. Başlayalım…
C’de dosyaya yeni kayıt ekleyen programın Algoritması:
ANA PROGRAM
- BAŞLA
- Dosya değişkeni oluştur (FILE*dosya;)
- Dosyayı aç ve tam yetki ver ((fopen(“veri.dat”,”a+”);)
- Ferror değişkeni sıfıra mı eşit? e:5 h:7
- “Hata var” yaz
- 18’e git
- Dosyanın sonuna git (fseek(dosya,0,SEEK_END);)
- “Numaraya gir” yaz
- ogrenci.numara gir
- “Ad” yaz
- ogrenci.adi gir
- “Notu gir” yaz
- ogrenci.notu yaz
- ogrenci yapısını dosyaya ogrenci byte’ı kadar yaz (fwrite(&ogrenci,sizeof(ogrenci),1,dosya);)
- “Başka kayıt ekleyecek misiniz?” yaz
- klavyeden girilen değer “e” veya “E” mi? e:7 h:17
- dosyayı kapat
- DUR
Algoritma Açıklaması:
Dosyaya veri girişi yaptırmak adına öncelikle bir dosya yapısı oluşturmalıyız. Dosya adında bir FILE yani dosya oluşturduk. Ardından oluşturduğumuz bu dosyayı programımız ile aynı dizin içerisinde “veri” adında, “dat” uzantılı, yazılabilir ve okunabilir yetkilerini vererek açtık. Ferror 0 değerini verirse programda hata var anlamına gelmekteydi. Bu nedenle ferror 0 değilse programı devam ettir dedik. Döngümüze başlattık kullanıcıdan bilgileri istedik ve ardından kullanıcı tarafından girilen değer küçük e veya büyük E harfiyse döngüyü tekrar devam ettirerek dosyaya yeni kayıt eklemeye olağan sağladık.
C’de dosyaya yeni kayıt ekleyen programın Akış Diyagramı:
Akış Diyagramının Açıklaması:
Akış diyagramı ve açıklamalarını ulaşmak için tıklayın.
C Programlamanın Açıklaması:
C kodları nasıl çalıştırılır (derlenir) öğrenmek için tıklayın.
C Programının Temel Yapısı(Değişken Tipleri) Programlama hakkındaki açıklamalar için tıklayın.
C Programlamada kullanıcının bilgi girişi – çıkışı yapması için gerekli açıklamar için tıklayın.
C’de dosyaya yeni kayıt ekleyen program – C programı:
#include
#include
struct ogryapi
{
char numara[10];
char adi[20];
int notu;
} ogrenci;
main()
{ char yenikayit;
FILE*dosya;
dosya=fopen("veri.dat","a+");
if(ferror(dosya)!=0) printf("Hata var\n");
else
{
fseek(dosya,0,SEEK_END);
do
{
printf("Numaraya gir: "); scanf("%s",&ogrenci.numara);
printf("Ad:"); scanf("%s",&ogrenci.adi);
printf("Notu gir:"); scanf("%d",&ogrenci.notu);
fwrite(&ogrenci,sizeof(ogrenci),1,dosya);
printf("Başka kayit ekleyecek misiniz?:");
yenikayit=getche(); printf("\n");
}
while((yenikayit=='E') || (yenikayit=='e'));
fclose(dosya);
}
getch();
}
C programının açıklaması:
Standart (Temel) C kütüphanemiz stdio.h’ı programızın kodlarını çalıştırmak için programımıza include kodu ile dahil ettik. Programımızın açılır açılmaz kapanmaması için getch() fonksiyonunu kullanırız. Getch fonksiyonunu kullanmamız içinde conio.h kütüphanesine ihtiyac duyarız. Bu nedenle conio.h kütüphaneside programımız içerisine dahil ediyoruz.
Ardından ogrenci değişkeniyle tanımladığımız, ogryapi adında bir struct – yapı(Struct nedir?) tanımladık. Yapının mantığı benzeri işlevi gören farklı türdeki değişkenleri bir araya toplamak olduğundan ogrenci bilgileri ile alakalı girilebilecek örnek değişkenleri yapı içerisine oluşturmalıyız. Char tipi İngilizce karşılığı Character yani bizim bildiğimiz karakter anlamına gelir. Hem rakamları hem de harfleri desteklemekte. İnt tipinin İngilizce karşılığı İntegerdır. Türkçe anlamı tamsayı olup yalnızca tamsayı tipinde oluşturulmuş sayıları destekler.
Ana programımızı oluşturduktan hemen sonra ilerde kullanıcıdan yeni bir kayıt ekleyecek misiniz sorusuna cevaplamak amacıyla kullanacağımız “yenikayit” değişkenini yaratıyoruz. FILE komutuyla dosyamızı oluşturduk. Fopen fonksiyonuyla dosyamızı açıyoruz. Fseek komutuyla ise programa her kayıt eklendiğinde dosyanın sonuna eklenmesi için dosyanın sonuna git fonksiyonunu uyguladık. Yeni kayıt ekletebilmek amacıyla bir döngüye ihtiyacımız var. Bu işlem için en uygun döngü tipi do {} while() döngü tipi olduğundan do while döngüsü oluşturuyoruz. Printf fonksiyonu yardımıyla belirlediğimiz karakterleri monitörümüze yazdırdık. scanf fonksiyonu yardımıyla da klavyeden girilen değeri ogryapi değişkenlerimize aktardık, eşitledik. Getche fonksiyonuyla klavyeden girilen tek karakteri yenikayit adlı değişkene eşitliyoruz. Eğer girilen değer “e” veya “E” ise döngüyü tekrar çalıştırdık.
Son olarak dosyamızı kapattık ve getch(); fonksiyonunu kullanarak programı sona erdiriyoruz.
Önizleme:
C uygulamasının proje hali ve yazılımı:
Proje halindeki dosyayı indir.
Uygulama halindaki dosyayı indir.