CodeBlanks Logo Icon CodeBlanks

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

main.c
#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

main.c
#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ı

Soru
char *tok = ____(text, ",");
Cevap
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

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