CodeBlanks Logo Icon CodeBlanks

String yardımcıları

  • C kursu
  • Orta seviye
  • Ders 14/116
  • 6 dk

String işleme fonksiyonlarını ekler ve test edersin.

String yardımcıları

İkinci ders str_len ve str_is_empty fonksiyonlarını tanımlar. str_len, bir dizenin bayt sayısını döndürür; str_is_empty, dizenin boş olup olmadığını söyler.

str_len için dize sonuna kadar yürür ve eleman sayar. str_is_empty, str_len'i çağırarak sonucu sıfırla karşılaştırır. Bu, kod tekrarını önler: tek bir uzunluk fonksiyonu, hem uzunluk hem boşluk kontrolü için kullanılır. Önceki dersin main'i bu dersin başlangıç koduna dahil edilir; sen yeni fonksiyonları eklersin.

str_len uygulaması

str_len, dize sonuna kadar yürüyüp sayar. En doğal yazım while (*s) döngüsüdür; dize sonunda *s sıfır olur ve döngü biter.

Örnek: int str_len(const char *s) { int n = 0; while (*s) { n++; s++; } return n; }. Her adımda n bir artar, s bir ilerler. Döngü '\0''a ulaşınca durur. Bu desen C'de çok yaygındır; strlen standart kütüphane fonksiyonu da benzer çalışır.

Uygulama str_len ve str_is_empty'i ekle

Var olan bildirilerin altına int str_len(const char *s) fonksiyonunu yaz; while (*s) döngüsüyle dize boyunu say ve döndür. int str_is_empty(const char *s) yaz; str_len(s) == 0 döndürsün. main içine printf("%d\n", str_len("Merhaba")); ve printf("%d\n", str_is_empty("")); satırlarını ekle.

Başlangıç kodu

main.c
#include <stdio.h>

int str_len(const char *s);
int str_is_empty(const char *s);
int num_abs(int n);
int num_sign(int n);
int arr_max(int *a, int n);
int arr_sum(int *a, int n);

int main(void) {
    printf("Modül hazır\n");
    return 0;
}

// str_len fonksiyonunu yaz: dize boyunu döndür
// str_is_empty fonksiyonunu yaz: boy 0 ise 1, değilse 0
// main içinde ikisini çağır ve yazdır

Örnek çözüm

main.c
#include <stdio.h>

int str_len(const char *s);
int str_is_empty(const char *s);
int num_abs(int n);
int num_sign(int n);
int arr_max(int *a, int n);
int arr_sum(int *a, int n);

int str_len(const char *s) {
    int n = 0;
    while (*s) { n++; s++; }
    return n;
}

int str_is_empty(const char *s) {
    return str_len(s) == 0;
}

int main(void) {
    printf("Modül hazır\n");
    printf("%d\n", str_len("Merhaba"));
    printf("%d\n", str_is_empty(""));
    return 0;
}

Beklenen çıktı

Modül hazır
7
1

Soru ve cevaplar

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

1 String yardımcılarını eşle

Kavram Anlamı
str_len("Merhaba") 7 (dize boyu)
str_len("") 0 (boş dize)
str_is_empty("") 1 (boş)
str_is_empty("x") 0 (dolu)

2 str_len için en doğal döngü hangisi?

  • while (*s) Doğru cevap
  • do...while
  • for (int i=0; i<n; i++)
  • switch

Açıklama: while (*s) dize sonuna kadar yürür; en doğal seçimdir.

3 str_len döngüsünü tamamla

Soru
int str_len(const char *s) {
    int n = 0;
    while (____) { n++; s++; }
    return n;
}
Cevap
int str_len(const char *s) {
    int n = 0;
    while (*s) { n++; s++; }
    return n;
}

Açıklama: *s, dize sonuna kadar non-zero kalır.

Orta seviye bölümündeki tüm dersler