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
#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
#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
int str_len(const char *s) {
int n = 0;
while (____) { n++; s++; }
return n;
}
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.