Menu
Coddy logo textTech

strcpy() Kullanımı

Coddy'nin C Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 16 / 63.

Dizelerin uzunluğunu strlen() ile nasıl bulacağınızı öğrendiniz, ancak bir dizenin içeriğini diğerine kopyalamanız gerekirse ne olur? C'de, dizeleri normal değişkenlerde yaptığınız gibi kopyalamak için atama operatörünü (=) kullanamazsınız.

Bunun nedeni, string'lerin karakter dizileri olmasıdır ve dizilerle = kullandığınızda, gerçek içeriği değil, yalnızca bellek adresini kopyalıyor olmanızdır. İşte bu noktada <string.h> kütüphanesindeki strcpy() fonksiyonu vazgeçilmez hale gelir.

#include <stdio.h>
#include <string.h>

char source[] = "Hello";
char destination[20];
strcpy(destination, source);  // "Hello" ifadesini destination içine kopyalar

strcpy() fonksiyonu iki argüman alır: hedef dizi (kopyalamak istediğiniz yer) ve kaynak dize (kopyalamak istediğiniz şey). Boş sonlandırıcı (null terminator) dahil olmak üzere her karakteri kaynaktan hedefe kopyalar.

Hedef dizinizin, kaynak dizginin tamamını ve boş sonlandırıcıyı (null terminator) tutacak kadar büyük olması çok önemlidir. Eğer hedef çok küçükse, strcpy() dizi sınırlarının ötesine yazacak ve belirsiz davranışa (undefined behavior) neden olacaktır.

Bu fonksiyon, C'de dize işleme için temeldir; dizeleri kopyalamanıza, dize değişkenlerini mevcut içerikle başlatmanıza ve dizeleri daha ileri işlemler için hazırlamanıza olanak tanır.

challenge icon

Görev

Kolay

strcpy() işlevini kullanarak dize kopyalamayı gösteren bir C programı yazın. Programınız şunları yapmalıdır:

  1. Gerçekleştirilecek dize işlemlerinin sayısını temsil eden bir tam sayı n okuyun
  2. Her işlem için:
    • Girdiden bir kaynak dize okuyun
    • 100 elemanlı, destination adlı bir karakter dizisi tanımlayın
    • Kaynak dizeyi hedef dizisine kopyalamak için strcpy() kullanın
    • Hem özgün kaynak dizeyi hem de kopyalanan hedef dizesini yazdırın
  3. Tüm işlemlerden sonra, kopyalanan dizelerin bağımsız olduğunu göstermek için:
    • Son hedef dizisinin ilk karakterini 'X' olarak değiştirin
    • Değiştirildiğini göstermek için değiştirilmiş hedef dizesini yazdırın

<string.h> işlevini kullanmak için strcpy() başlığını eklemeyi unutmayın.

Çıktınız aşağıdaki biçimde sonuçları göstermelidir:

Source: [source_string]
Destination: [copied_string]
Source: [source_string]
Destination: [copied_string]
...
Modified last destination: [modified_string]

Örneğin, girdi şu şekildeyse:

3
hello
world
programming

Çıktınız şu şekilde olmalıdır:

Source: hello
Destination: hello
Source: world
Destination: world
Source: programming
Destination: programming
Modified last destination: Xrogramming

Bu görev, dize içeriğini bir karakter dizisinden diğerine kopyalamak için strcpy() kullanımını, hedef dizileri için uygun bellek ayırmayı anlamanızı test eder ve kopyalanan dizelerin kaynaklarından bağımsız olduğunu gösterir.

Kendin dene

#include <stdio.h>
#include <string.h>

int main() {
    int n;
    scanf("%d", &n);
    
    char source[100];
    char destination[100];
    
    // YAPILACAK: Kodunuzu buraya yazın
    // n adet dize işlemini işlemek için bir döngü kullanın
    // Her işlem için:
    // - Kaynak dizeyi okuyun
    // - Kaynağı hedefe kopyalamak için strcpy() kullanın
    // - Her iki dizeyi de istenen formatta yazdırın
    
    // YAPILACAK: Döngüden sonra, son hedefin ilk karakterini değiştirin
    // ve değiştirilmiş dizeyi yazdırın
    
    return 0;
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online C derleyicisi