C programlama dilinde yazılan programlarda verilerin konsola yazdırılması ve kullanıcıdan veri alma işlemleri giriş ve çıkış işlemleri olarak adlandırılmaktadır. Giriş ve çıkış işlemlerinde iki temel fonksiyon mevuttur. Bunlar printf() ve scanf() fonksiyonlarıdır.
printf() Fonksiyonu
printf() fonksiyonu kullanılarak içerisinde belirtilen parametre veya parametreler ekrana yazdırılabilmektedir. Bu fonksiyonun kullanımında önemli olan içerisinde belirtilen parametrenin hangi değişken türünde olduğunu programa doğru bir şekilde bildirmektedir.
#include<stdio.h>
int main(){
printf("Merhaba Dunya");
return 0;
}
Çıktı:
Merhaba Dunya
Yukarıdaki kodda da görüldüğü üzere ekrana “Merhaba Dunya” yazısı yazdırabilmek için printf() fonskiyonu kullanılmıştır. Lakin yukarıdaki kodda dikkat ederseniz “Dünya” kelimesi yerine “Dunya” kelimesi kullanılmıştır. Bunu sebebi Türkçe karakterlerin standart olarak ekrana yazdırılamamasıdır. Eğer Türkçe karakter olan “ç, ğ, ü, ö” karakterleri ekrana yazdırılmak istenirse bunun için yerelleştirme işlemi yapılmalıdır.
#include<stdio.h>
#include<locale.h>
int main(){
setlocale(LC_ALL, "Turkish");
//Turkce karakterler cikis icin kodumuza eklendi
printf("Merhaba Dünya");
return 0;
}
Çıktı:
Merhaba Dünya
Yukarıdaki kodda görüldüğü üzere “locale.h” projemize dahil edilmiştir. Devamında setlocale komutu ile Türkçe dilinin karakterleri program için tanımlanmıştır. Sadece ekrana yazı yazdırmak için değil aynı zamanda önceden bellekte tanımlanmış olan veriler de printf() fonksiyonu ile ekrana yazdırılabilmektedir.
#include<stdio.h>
int main(){
int x = 5;
//tamsayi tanımlandı
float y = 4.7;
//ondalikli sayi tanımlandı
char z = 'h';
//karakter tanımlandı
printf("x = %d, y = %f, z = %c",x, y, z);
return 0;
}
Çıktı:
x = 5, y = 4.700000, z = h
Yukarıdaki kodun çıktısında dikkat ettiyseniz y değişkenin değeri 4.7 değil de 4.700000 olarak verilmiştir. Ondalıklı kısımda veya tam kısımda kaç basamak görüntülenmesini istiyorsak bunu printf() içerisinde belirtmeliyiz.
#include<stdio.h>
int main(){
float x = 4.751165165;
//ondalikli sayi tanımlandı
printf("x = %.3f \n",x);
//3 basamak ondalık hassasiyeti
printf("x = %.5f \n",x);
//5 basamak ondalık hassasiyeti
printf("x = %.7f \n",x);
//7 basamak ondalık hassasiyeti
return 0;
}
Çıktı:
x = 4.751 x = 4.75117 x = 4.7511654
Yukarıdaki kodda da görüldüğü üzere tamsayı (integer), ondalıklı (float) ve karakter (char) tipinde verileri printf() fonksiyonu ile konsola yazdırdık.
Bilgisayarımızın konsoluna gelen çıktının resmi yukarıda mevcuttur.
scanf() Fonksiyonu
scanf() fonskiyonu kullanılarak kullanıcıdan veri alınmaktadır. Bu fonksiyon ile kullanıcı kendi belirlediği değerleri programa bildirmektedir. scanf() fonnski,yonu kullanılırken dikkat edilmesi gereken en önemli nokta kullanıcıdan hangi türde bir veri alınacağının scanf() fonksiyonuna doğru işlenmesidir. Eğer kullanıcıdan integer veri tipinde bir değer istenilecekse %d şeklinde scanf() içerisinde bu belirtilmelidir.
#include<stdio.h>
int main(){
int sayi;
scanf("%d", &sayi);
return 0;
}
Çıktı:
Yukarıdaki kodda integer veri tipinde sayi isimli bir değişken tanımlanmış ve sonrasında kullanıcıdan bir değer girmesi istenilmiştir. Kullanıcının girmiş olduğu bu tamsayı değerinin sayi isimli değişkene atanması sağlanmıştır.
scanf() fonksiyonunun ekrandaki karşılığı yanıp sönen imleçtir. Bu kullanıcıdan bir değer istenildiği anlamına gelmektedir. Genellikle kullanıcıdan scanf() fonksiyonu ile bir veri girilmesi stenildiği zaman öncesinde bir printf() fonksiyonu kullanılarak kullanıcıdan tam olarak ne istenildiği ekrana yazdırılır.
#include<stdio.h>
#include<locale.h>
int main(){
setlocale(LC_ALL, "Turkish");
int sayi;
printf("Lütfen bir tamsayı giriniz: ");
scanf("%d", &sayi);
return 0;
}
Çıktı:
Yukarıdaki kodda kullanıcıdan bir tamsayı değer girmesi istenilmmiş ve girilen bu değer sayi isimli değişkene atanmıştır. Kullanıcıdan değer alma ve değişkene alınan değerin atanması işlemlerini scanf() fonksiyonu gerçekleştirmiştir.
Veri türleri arasında dönüşüm yapılarak ekrana yazdırılma istenirse printf() fonksiyonu içerisine dönüştürülmesi istenilen biçim yazılmalıdır.
#include <stdio.h>
#include<locale.h>
int main(){
setlocale(LC_ALL, "Turkish");
char karakter;
//karakter değişkeni tanımlandı
printf("Lütfen bir karakter giriniz: ");
//ekrana yazı yazdırıldı
scanf("%c", &karakter);
//kullanıcıdan değer istenildi
printf("Girdiğiniz karakter: %c.\n",karakter);
//girilen değer ekrana yazdırıldı
printf("Girdiğiniz değerin ASCII değeri: % d.", karakter);
//girilen değerin ASCII karşılığı ekrana yazdırıldı
return 0;
}
Yukarıdaki kodda kullanıcıdan scanf() fonksiyonu ile bir char veri tipinde bir değer alınmıştır. Alınan bu değer hiç bir değişime uğramadan %d biçiminde fonksiyoa işlenerek değerin ASCII tablosundaki karşılığı ekrana yazdırılmıştır.
Yorum bölümünden tüm sorularınızı bana iletebilirsiniz.
Çalışmalarınızda başarılar dilerim.
Hamit Can Dinç.