string.h
- C kursu
- Orta seviye
- Ders 83/116
- 4 dk
string.h içindeki dize fonksiyonlarını öğrenirsin.
string.h
<string.h> başlığı, C dizgileri (char dizileri) üzerinde çalışan işlevler sunar: kopyalama (strcpy), birleştirme (strcat), boy bulma (strlen) ve karşılaştırma (strcmp).
C'de dizgi, null ile sonlanan bir char dizisidir. strcpy(dst, src) src'yi dst'ye kopyalar. strcat(dst, src) src'yi dst'nin sonuna ekler. strlen(s) null hariç karakter sayısını verir. strcmp(a, b) eşitse 0, a küçükse negatif, büyükse pozitif döndürür. Bu işlevlerin hiçbiri bellek sınırını denetlemez; bu yüzden hedef dizinin yeterince büyük olması gerekir. Modern C'de strncpy ve strncat gibi sınırlı varyantlar da vardır.
strcpy ve strcat örneği
Bir dizgiyi sıfırdan kurmak için strcpy ile başlayıp strcat ile parça ekleriz. Hedef dizi yeterince büyük olmalıdır.
Örnek: char buf[64]; strcpy(buf, "42"); strcat(buf, " + 58");. İlk strcpy buf'ya 42 yazar (null dahil 3 bayt). strcat sonuna + 58 ekler; artık buf 42 + 58 içerir. strlen(buf) 7 döndürür (null hariç). Çıktı: 7 42 + 58. Burada 64 baytlık buf fazlasıyla yeterlidir. Eğer hedef küçük olsaydı, strcat taşma yapar ve tanımsız davranış oluşurdu. Bu yüzden hedef boyunu her zaman kontrol et.
Uygulama Dizgi kur
main'de char buf[64];. strcpy(buf, "42"); ile başla. strcat(buf, " + 58"); ile ekle. printf("%zu %s\n", strlen(buf), buf); ile boyu ve dizgiyi yazdır.
Başlangıç kodu
#include <stdio.h>
#include <string.h>
// main: char buf[64]; strcpy ile "42" kopyala
// strcat ile " + 58" ekle
// strlen ile boyu bul, printf ile yazdır
int main(void) {
// buraya yaz
return 0;
}Örnek çözüm
#include <stdio.h>
#include <string.h>
int main(void) {
char buf[64];
strcpy(buf, "42");
strcat(buf, " + 58");
printf("%zu %s\n", strlen(buf), buf);
return 0;
}Beklenen çıktı
7 42 + 58
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 string işlevleri
| Kavram | Anlamı |
|---|---|
strcpy |
kopyala |
strcat |
ekle |
strlen |
boyu bul |
strcmp |
karşılaştır |
2 strcat çağrısı
strcat(buf, ____);
strcat(buf, " + 58");
Açıklama: strcat ikinci argümanı birinciye ekler.
3 strlen("42 + 58") ne döndürür?
- 7 Doğru cevap
- 0
- 6
- 8
Açıklama: strlen null hariç karakter sayısını verir: 7.