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 = 25Dö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
#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
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ı
int n = ____(input, "%s %d", name, &age);
int n = sscanf(input, "%s %d", name, &age);
Açıklama: Dizeden biçimli okuyan fonksiyon.