strtok
- C kursu
- Başlangıç
- Ders 90/116
- 5 dk
strtok ile dizeyi parçalara ayırmayı öğrenirsin.
strtok: dizeyi parçalara bölme
strtok fonksiyonu bir dizeyi belirtilen ayraç karakterlerine göre parçalara böler. <string.h> başlığıyla gelir. İlk çağrıda dizeyi verirsin; sonraki çağrılarda ise NULL verirsin.
char text[] = "elma,armut,muz";
char *tok = strtok(text, ",");
// tok = "elma"Her çağrı bir sonraki parçayı döndürür. Ayraç karakteri bulunduğunda dize sonuna gelinmiş gibi davranır. Tüm parçalar bittiğinde NULL döner. Aynı dizeyi tekrar bölmek istersen baştan başlaman gerekir.
strtok döngüsü
Tüm parçaları almak için strtok'u bir while döngüsü içinde çağırırsın. İlk çağrıda dizeyi, sonraki çağrılarda NULL verirsin.
char text[] = "elma,armut,muz";
char *tok = strtok(text, ",");
while (tok != NULL) {
printf("%s\n", tok);
tok = strtok(NULL, ",");
}Döngü her adımda bir parça yazdırır; strtok NULL döndüğünde biter. İkinci ve sonraki çağrılarda NULL vermek, fonksiyonun önceki dizeyi hatırlamasını sağlar. Bu, dizedeki kelimeleri tek tek işlemek için standart bir desendir.
Uygulama Virgülle ayrılmış meyveleri yazdır
strtok ile "elma,armut,muz" dizesini virgüle göre böl ve her parçayı ayrı bir satıra printf ile yazdır. Bir while döngüsü kullan; strtok NULL döndürene kadar devam et. <string.h> başlığını ekle.
Başlangıç kodu
#include <stdio.h>
int main(void) {
char text[] = "elma,armut,muz";
/* strtok ile parçalara böl; her parçayı printf ile yazdır */
return 0;
}Örnek çözüm
#include <string.h>
char *tok = strtok(text, ",");
while (tok != NULL) {
printf("%s\n", tok);
tok = strtok(NULL, ",");
}Beklenen çıktı
elma armut muz
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Boşluğu doldur: strtok ilk çağrı
char *tok = ____(text, ",");
char *tok = strtok(text, ",");
Açıklama: strtok ilk çağrıda dizeyi verirsin.
2 strtok ile ikinci parçayı almak için ilk argüman ne olmalı?
- Aynı dize
- Boş dize
- NULL Doğru cevap
- Ayraç karakteri
Açıklama: Sonraki çağrılarda NULL verirsin; strtok önceki dizeyi hatırlar.
3 Kavram ve açıklama eşleştir
| Kavram | Anlamı |
|---|---|
strtok |
Dize böler |
NULL |
Sonraki çağrı |
delimiter |
Ayraç karakteri |
token |
Parça |