strcpy ve strcat
- C kursu
- Başlangıç
- Ders 62/116
- 5 dk
strcpy ile kopyalama ve strcat ile birleştirme öğrenirsin.
strcpy ile dize kopyalama
C'de dizeleri = ile sonradan kopyalayamazsın; <string.h>'daki strcpy fonksiyonunu kullanmalısın.
char src[] = "Merhaba";
char dst[20];
strcpy(dst, src);
/* dst: "Merhaba" */Hedef dizinin kaynak dizeden en az bir eleman büyük olması gerekir (null için). Aksi halde taşma olur ve tanımsız davranış başlar.
strcat ile dize birleştirme
strcat kaynağı hedefin sonuna ekler. Hedef dizinin, sonucu taşıyacak kadar büyük olması gerekir.
char greeting[20] = "Merhaba, ";
strcat(greeting, "Ayşe");
/* greeting: "Merhaba, Ayşe" */strcat hedefin null karakterini bulur, üzerine yazar ve yeni sona null koyar. Hedef yeterince büyük değilse taşma olur; bu yüzden boyutu hesaba katmak önemlidir.
Uygulama Ad ve soyadı birleştir
char full[40] tanımla ve strcpy ile "Ayşe" dizesini kopyala. Sonra strcat ile " Yılmaz" dizesini ekle. printf %s ile yazdır; çıktı Ayşe Yılmaz olmalı.
Başlangıç kodu
#include <stdio.h>
#include <string.h>
int main(void) {
char full[40];
/* strcpy ile "Ayşe" kopyala */
/* strcat ile " Yılmaz" ekle */
/* printf %s ile yazdır */
return 0;
}Örnek çözüm
#include <stdio.h>
#include <string.h>
int main(void) {
char full[40];
strcpy(full, "Ayşe");
strcat(full, " Yılmaz");
printf("%s\n", full);
return 0;
}Beklenen çıktı
Ayşe Yılmaz
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Aşağıdaki atamalardan hangisi derleme hatası verir?
- char a[] = "Merhaba";
- char b[20]; strcpy(b, a);
- char c[20] = a; Doğru cevap
- char d[] = {'A','l','i','\0'};
Açıklama: Diziler arasında = ile kopyalama yapılamaz; strcpy gerekir.
2 strcpy çağrısı
strcpy(dst, ____); /* src'ten dst'ye kopyala */
strcpy(dst, src); /* src'ten dst'ye kopyala */
Açıklama: İkinci argüman kaynak, ilk argüman hedeftir.
3 strcpy ve strcat eşleştir
| Kavram | Anlamı |
|---|---|
strcpy |
kopyala |
strcat |
ekle |
dst |
hedef dizi |
src |
kaynak dizi |