C’de dosyaya yeni kayıt eklemek

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

  1. BAŞLA
  2. Dosya değişkeni oluştur (FILE*dosya;)
  3. Dosyayı aç ve tam yetki ver ((fopen(“veri.dat”,”a+”);)
  4. Ferror değişkeni sıfıra mı eşit? e:5 h:7
  5. “Hata var” yaz
  6. 18’e git
  7. Dosyanın sonuna git (fseek(dosya,0,SEEK_END);)
  8. “Numaraya gir” yaz
  9. ogrenci.numara gir
  10. “Ad” yaz
  11. ogrenci.adi gir
  12. “Notu gir” yaz
  13. ogrenci.notu yaz
  14. ogrenci yapısını dosyaya ogrenci byte’ı kadar yaz (fwrite(&ogrenci,sizeof(ogrenci),1,dosya);)
  15. “Başka kayıt ekleyecek misiniz?” yaz
  16. klavyeden girilen değer “e” veya “E” mi? e:7 h:17
  17. dosyayı kapat
  18. 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ı:

c-de-dosyaya-veri-yazma

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-de-veriyi-kayit-yazdirma-veri-dat

C uygulamasının proje hali ve yazılımı:

Proje halindeki dosyayı indir.

Uygulama halindaki dosyayı indir.

C’de Makro Kullanımı (#define) (Videolu)

Makro nedir?

Makro bir takım işlemlerin tek bir adımda gerçekleştirilmesidir. C programlamada makro kullanımı #define komutu ile gerçekleşir.

Makro kullanım amaçları nelerdir?

Makro

  1. Sabit tanımlamak
  2. Aritmetik işlem içeren (if, for, while vb. döngüler içermeyen) fonksiyonları geliştirmek
  3. Bir komutu basitleştirebilmek

kullanılırlar.

Makro Tanımlama

#define …..;

Define’nin Türkçe anlamı tanımlamak anlamına gelir. Define program içerisine biz kendi değerimizi tanımlayabiliriz.  C bizim için bilimsel değerleri tanımlamaz.  Örneğin biz Pi sayısını sabit bir değere atayıcaz bunun için pi kullanabiliriz. Daha sonra ise program içerisinde pi yazıp bunu kullanabiliriz.

Bunun için bir C örneği yapalım.

C kodları;

// Define özelliği -> Kısa olarak fonksiyon sağlama. Programlamada profesyonelleşmek için bol bol örnek yapılmalı.

// Son 2 hafta dosyalama işlemlerini işleyeceğiz.

#include

#include<conio.h>

#define pi 3.14

#define alan(r) pi*r*r

#define yaz(x) printf(“sonuc=%f\n”,x)

main()

{

 int R; float a;

 printf(“yaricapi gir: “); scanf(“%d”,&R);

 a=alan(R);

 yaz(a);

 getch();

}

Programının önizlemesi;

c programlama   define ozelligi  C Programlama Dilinin Genel Yapısı

Serbest Düşme komutunu (h = 1/2gt^2) Makro ile kullanım;


// Serbest düşme hareketini hesaplayan C programı
#include
#include
// Yer çekimi = 9.81
#define g 9.81
// Serbest Düşme Formülü = 1/2gt2
#define yol(x) (0.5*g*x*x)
#define yaz(x) printf("Sonuc = %3.3f\n",x)
main()
{
float h,t;
printf("Zamani gir: "); scanf("%f",&t);
h=yol(t);
yaz(h);
getch();
}

 c-programlamad-serbest-dusme-ornegi

Serbest düşme hareketini hesaplayan programı indir.