C programlama Dilinde printf ve scanf Fonksiyonları

  • 05-01-2020 05:16
  • 12029

C'de Giriş Çıkış Akışları (stream)

C'de kullanılan üç farklı genel akış vardır bunlardan ikisi giriş çıkış aygıtlarına ait diğeri ise hata akışıdır.

stdin: Genel giriş için kullanılan akıştır. Klavyede yazılan herşey bu akışa aktarılır ve C programında istenilen yerde bu akış okunarak değerlendirilir.

stdout: Genel çıktı akışı. Bu akış ekrana bağlıdır. Ekrana yazılmak istenilen herşey bu akışa kaydedilir.

stderr: Genel hata akışı bu akışa da program sırasında oluşan hatalar kaydedilir.

Bu akışlar C'de dosya tipindedir dosya gibi okunup yazılabilir ama genel olarak bunlar için özelleşmiş fonksiyonlar vardır. Genel giriş için scanf,fscanf,gets,fgets fonksiyonları, genel çıktı için printf,puts,fprintf,fgets fonksiyonları kullanılır. Stderr için ise fputs,fprintf kullanılır.

Printf

C'de ekrana bir text ya da değişken içeriklerini yazdırmak için standart kütüphane içinde bulunan printf fonksiyonu kullanılır. Printf fonksiyonu değişken uzunlukta parametre alır. Bir çok farklı veri tipini ekrana yazdırmak için tanımlı özel argümanları vardır, bu argümanları kullanarak istediğimiz değişkenin içeriğini ekrana yazdırabiliriz.

int printf ( const char * format, ... );

Yukarıdaki tanımda görüldüğü gibi fonksiyon iki parametreden oluşuyor, ilki 'const char *' olarak tanımlanmış ve text olarak çift tırnak içerisine yazılan parametre ekranda görünmesini istediğimiz text ve değişkenlere ait argümanlardan oluşur. İkincisi ise üç nokta ile belirtilen sayısı tanımlanmamış parametredir. Bunun anlamı belirsiz sayıda parametre kullanılabileceğidir. Bu kısma ilk parametrede belirtilmiş ekranda göstermek istenilen değişkenler virgülle ayırarak yazılır.

Örneklerle printf Kullanımı

Sabit bir mesajı ekrana yazdırmak için çift tırnak içerisine mesajı yazmamız yeterli.

    printf("C'de printf kullanımı.");

 

Bir string değişkeni ekrana yazdırmak için %s argümanını kullanılır.

    char  str[]="C Programlama Dili";
    printf("%s",str);

 

İşaretli int ve long değişkenleri onluk sistemde ekrana yazdırmak için %d veya %i kullanılır.

    int a=123456789;
    printf("%d",a);
    printf("%i",a);

 

İşaretsiz int ve long değişkenleri onluk sistemde ekrana yazdırmak için %u kullanılır.

    unsigned int a=123456789;
    printf("%u",a);

 

İşaretsiz int ve long değişkenleri sekizlik sistemde ekrana yazdırmak için %o kullanılır.

    unsigned int a=123456789;
    printf("%o",a);

 

 İşaretsiz int ve long değişkenleri onaltılı sistemde ekrana yazdırmak için %x veya %X kullanılır.

    unsigned int a=123456789;
    printf("%x",a);
    printf("%X",a);

 

float tipinde değişkeni ekrana yazdırmak için %f ,%e, %E , %g, %G formatlarından biri kullanılabilir.

    float   fp=3.1415;
    printf("%f",fp);
    printf("%g",fp);

 

double tipinde değişkeni ekrana yazdırmak için %f, %lf ,%e, %E , %g, %G formatlarından biri kullanılabilir.

    double  d= 1.98765432e+12;
//Uzun gösterim printf("%f",d); //Bilimsel gösterim (Küçük harf) printf("%e",d); //Bilimsel gösterim (Büyük harf) printf("%E",d); //Kısa gösterim (Küçük harf) printf("%g",d); //Kısa gösterim (Büyük harf) printf("%G",d);

 

Ekrana tek bir karakter yazdırmak için %c kullanılır.

    char chr='R';
    printf("%c",chr);

 

Karakter sayısının sınırlandırılması float bir değişken için %4.2f kullanımı minimum 4 karakter ve noktadan sonra iki karakter yazar. Sayı 4 haneden küçükse sağa dayalı şekilde 4 karaktere tamamlanacak kadar boşluk yazar. %04.2f kullanımında boşluk yerine sıfır yazar.

scanf Kullanımı

scanf fonksiyonu klavyeden bir değer okumak için kullanılır. Kullanımı printf'e benzer farklı olrak 2. parametre olarak değişkenlerin kendisini değil adresini kullanır. Bu sayede klavyeden okunan değerler değişkene kaydedilbilir.

Aşağıdaki kod klavyeden bir string okumak için kullanılabilir. Klavyeden girilen string str değişkenine kaydedilir.

scanf ile string okuma örneği:

    char  str[20];
    scanf("%s",&str[0]);

 

int ve long tipinde  sayısal değerler okumak için %d veya %i kullanılır.

scanf ile tam sayı okuma örneği:

    int a;
    scanf("%d",&a);

 

scanf ile float ve double tipinde ondalık sayıları okumak için '%f' kullanılır.

scanf ile ondalık sayı okuma örneği:

    float a;
    scanf("%f",&a);