C
String yardımcıları
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.
Örnek çözümü göster
#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;
}
Kendini test et
-
String yardımcılarını eşle
- str_len("Merhaba")
- 7 (dize boyu)
- str_len("")
- 0 (boş dize)
- str_is_empty("")
- 1 (boş)
- str_is_empty("x")
- 0 (dolu)
-
str_len için en doğal döngü hangisi?
- while (*s)
- do...while
- for (int i=0; i<n; i++)
- switch
Cevabı göster
while (*s) — while (*s) dize sonuna kadar yürür; en doğal seçimdir.
-
str_len döngüsünü tamamla
int str_len(const char *s) {
int n = 0;
while (____) { n++; s++; }
return n;
}
Cevabı göster
int str_len(const char *s) {
int n = 0;
while (*s) { n++; s++; }
return n;
}
Sıradaki ders: Sayı yardımcıları