CodeBlanks Logo Icon CodeBlanks

sscanf

  • C kursu
  • Başlangıç
  • Ders 92/116
  • 5 dk

sscanf ile dizeden değer okumayı öğrenirsin.

sscanf: dizeden biçimli okuma

sscanf fonksiyonu scanf gibi çalışır ama klavyeden değil, bir dizeden okur. <stdio.h> başlığıyla gelir. İmzası int sscanf(const char *s, const char *fmt, ...) biçimindedir.

char input[] = "Ali 25";
char name[16];
int age;
int n = sscanf(input, "%s %d", name, &age);
// n = 2, name = "Ali", age = 25

Dönüş değeri, başarıyla okunan alan sayısıdır. name bir dize olduğu için doğrudan verilir; age ise bir int olduğu için adresi &age biçiminde verilir. Bu, yapılandırılmış metni ayrıştırmak için güçlü bir araçtır.

sscanf ile ad ve yaş ayrıştırma

sscanf bir dizeden birden fazla değer çıkarabilir. Biçim dizesi, hangi parçaların nasıl okunacağını belirler.

char input[] = "Ayse 30";
char name[16];
int age;
sscanf(input, "%s %d", name, &age);
printf("%s %d\n", name, age);
// "Ayse 30"

Burada %s boşluğa kadar olan kısmı name'e, %d ise sayıyı age'e yazar. &age adres operatörü age'in bellekteki yerini verir; böylece sscanf değerini oraya yazabilir. Dize ise doğrudan adıyla verilir çünkü adın kendisi zaten adrestir.

Uygulama Ad ve yaş bilgisini ayrıştır

"Ali 25" dizesinden sscanf ile bir name dizesi ve bir age tamsayısı oku. Sonra printf ile n, name ve age değerlerini "%d %s %d\n" biçiminde yazdır.

Başlangıç kodu

main.c
#include <stdio.h>

int main(void) {
    char input[] = "Ali 25";
    /* name ve age tanımla; sscanf ile oku; printf ile yazdır */
    return 0;
}

Örnek çözüm

main.c
char name[16];
int age;
int n = sscanf(input, "%s %d", name, &age);
printf("%d %s %d\n", n, name, age);

Beklenen çıktı

2 Ali 25

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 sscanf çağrısı ne döndürür?

  • Eşleşen alan sayısını Doğru cevap
  • Yazılan karakter sayısını
  • Bir hata kodunu
  • Bir işaretçi

Açıklama: sscanf başarıyla okunan alan sayısını döndürür.

2 Fonksiyon ve kaynak eşleştir

Kavram Anlamı
sscanf Dizeden okur
scanf Klavyeden okur
%s %d İki alan okur
return Eşleşme sayısı

3 Boşluğu doldur: sscanf çağrısı

Soru
int n = ____(input, "%s %d", name, &age);
Cevap
int n = sscanf(input, "%s %d", name, &age);

Açıklama: Dizeden biçimli okuyan fonksiyon.

Başlangıç bölümündeki tüm dersler