C Programlama scanf() Fonksiyonu

    

scanf() Fonksiyonu : Programların çalışma esnasında veri girişine ihtiyaç duyabilirler. Kullanıcıların girdiği verileri işleyip değerlendirmemize yarayan fonksiyonlarda giriş fonksiyonları adı verilir. Örneğin printf fonksiyonu nasıl verinin ekrana yazdırılmasını sağlayan bir çıkış fonksiyonu ise scanf de printf fonksiyonunuda bunun tam tersi olarak düşünebiliriz.

C Programlama scanf() Fonksiyonu

Resimde görüldüğü gibi scanf fonksiyonunun ilk parametresi bir karakter disidir. Bu parametre kullanıcıdan hangi veri girişlerinden kaç tane beklendiğini derleyiciye anlatır. %d ifadesi bizden bir tamsayı istendiğini belirtirken, %d %f %d ifadesi sırasıyla bir tamsayı, bir ondalık sayı ve bir tamsayı olmak üzere üç adet değer istendiğini ifade eder. scanf fonksiyonunun sonraki parametreleri ise değerlerin depolanacağı değişkenlerin bellek adresleri olmalıdır.

Tip Karakteri

İşlevi

Tipi

%c

tek bir karakter

char

%d veya %i

işaretli ondalık tamsayı

int, short

%ld

uzun işaretli ondalık tamsayı

long

%u

işaretsiz ondalık tamsayı

unsigned int, unsigned short

%f

Gerçel sayı

float, double

%s

karakter dizisi (string)

char

%lu

işaretsiz uzun tamsayı

unsigned long

%x Hexa decimal sayılar
%o Octal sayılar

Örnek

#include <stdio.h>

int main(int argc, char** argv){
int s1,s2;
printf(“2 adet sayi girisi yapiniz:”);
scanf(“%d %d”, &s1, &s2);
printf(“girilen sayilar:%d ve %d”, s1,s2);
return 0;
}

C Programlama scanf() Fonksiyonu

Örnekte scanf ile iki tamsayı alınmış ve alınan değerler prinf ile ekrana yazdırılmıştır.Fonksiyonun ilk parametresinde %d %d ile kullanıcıdan arada boşluk bırakılarak iki adet tam sayı girilmesi istenmiştir.İkinci ve üçüncü parametrelerde ise değerlerin tutulacağı bellek adresleri s1,s2 olarak belirlenmiştir. Bir değişkenin hemen önüne & işareti geldiğinde o değişken bellek adresini referans göstermektedir. Bunun nedeni scanf fonksiyonu bir giriş fonksiyonu olması nedeniyle değişkenlerin değerleriyle değil bellek adreslerini kullanacak şekilde tasarlanmış olmasıdır. Bu durum diziler için geçerli değildir! Çünkü dizi (string) türünden değişkenlerde dizinin adı zaten o dizinin ilk elemanının bellek adresini gösterir. Böylelikle dizi türünden değişkenlerde & işareti kullanımına gerek yoktur.

Örnek

#include <stdio.h>

int main(int argc, char** argv){
char marka[30];
printf(“Lutfen monitorunuzun markasini giriniz:”);
// scanf(“%s”, &marka); Bu sekilde kullanim hatalidir//
scanf(“%s”, marka); //Bu sekilde kullanim dogrudur//
printf(“Monitorunuzun markasi %s”, marka);
return 0;
}
C Programlama scanf() Fonksiyonu

Örnek
#include <stdio.h>

void main (void){

int s1;
double s2;
float s3;
char isim[20], web[30];
printf(“Lutfen integer bir deger giriniz:”);
scanf(“%d”, &s1);
printf(“Girilen integer deger %d dir.nn”, s1);

printf(“Lutfen double bir deger giriniz:”);
scanf(“%lf”, &s2);
printf(“Girilen double deger %g idinn”, s2);

printf(“Lutfen integer ve bir float deger giriniz:”);
scanf(“%d %f”, &s1, &s3);
printf(“Girilen degerler %d ve %f idi.n”, s1,s3);

printf(“isminizi giriniz:”);
scanf(“%s”, &isim);
printf(“web adresinizi giriniz: “);
scanf(“%s”, &web);
printf(“Girilen isim: %sn”, isim);
printf(“Girilen web adresi:%sn”, web);

system(“pause”);
return(0);
}
C Programlama scanf() Fonksiyonu
Örnek

void scanfornek2(){

int sayi1, sayi2;

printf(“n Birinci Hex Sayiyi Giriniz: “);
scanf(“%x”, &sayi1);

printf(“n Girdiginiz sayinin karsiligi: %d “, sayi1);

printf(“n Ikinci Hex Sayiyi Giriniz: “);
scanf(“%x”, &sayi2);

printf(“n Girdiginiz sayinin karsiligi: %d “, sayi2);

printf(“n sayilarin hex toplami: 0x%x sayilarin decimal toplami: %d”,sayi1+sayi2, sayi1+sayi2);

}

Örnek

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) {

char ch;
char str[100];
printf(“Enter any character n”);
scanf(“%c”, &ch);
printf(“Entered character is %c n”, ch);
printf(“Enter any string(upto 100 character) n”);
scanf(“%s”, &str);
printf(“Entered string is %s n”, str);

return (EXIT_SUCCESS);
}

C Programlama scanf() Fonksiyonu

Kaynaklar
•http://www.ibrahimbayraktar.net/2013/12/c-programlama-scanf-fonksiyonu.html