Menu
Coddy logo textTech

char Dizisi Olarak Stringler

Coddy'nin C Journey'sinin Logic & Flow bölümünün bir parçası — ders 12 / 63.

C'de, diğer programlama dillerinde bulabileceğiniz gibi yerleşik bir dize (string) veri türü yoktur. Bunun yerine, dizeler karakter dizileri (arrays of characters) olarak temsil edilir. Bu temel kavram, C programlamada metnin nasıl işlendiğini anlamak için esastır.

C'de bir dizgi (string), ardışık bellek konumlarında saklanan basit bir karakter dizisidir. Bir dizgi oluşturmak için, ihtiyacınız olan tüm karakterleri ve özel bir sonlandırıcı karakter için bir ek alanı tutacak kadar büyük bir karakter dizisi (character array) tanımlarsınız.

char greeting[6];  // 5 karakter + sonlandırıcı tutabilir
char message[20]; // 19 karaktere kadar + sonlandırıcı tutabilir

Dizelerle çalışmanın en uygun yolu, diziyi bildirirken onları doğrudan bir string literal ile başlatmaktır. C, her bir karakterin dizide saklanmasıyla ilgili ayrıntıları otomatik olarak halleder:

char greeting[6] = "Hello";
// Bu şunları depolar: 'H', 'e', 'l', 'l', 'o', artı özel bir sonlandırıcı

Bir dize sabiti ile başlatırken boyut belirtimini atlayarak C'nin dizi boyutunu otomatik olarak belirlemesine de izin verebilirsiniz:

char greeting[] = "Hello";  // C otomatik olarak bu boyutu 6 yapar

Dizelerin karakter dizileri (array) olduğunu anlamak kritiktir; çünkü bu, C'nin metin verilerini nasıl işlediğini açıklar ve sizi bu karakter dizileri üzerinde çalışan dize işleme (string manipulation) fonksiyonlarıyla çalışmaya hazırlar.

challenge icon

Görev

Kolay

Dizeleri depolamak için karakter dizileri oluşturmayı ve bunlarla çalışmayı gösteren bir C programı yazın. Programınız şunları yapmalıdır:

  1. "Hello" dizesini tutacak kadar alana sahip (null sonlandırıcıyı hesaba katmayı unutmayın) greeting adında bir karakter dizisi tanımlayın
  2. greeting dizisini "Hello" dize sabiti ile başlatın
  3. 20 elemanlı message adında ikinci bir karakter dizisi tanımlayın
  4. message dizisini "Welcome" dize sabiti ile başlatın
  5. Boyut belirtmeden word adında üçüncü bir karakter dizisi tanımlayın ve "Programming" ile başlatarak C'nin boyutu otomatik olarak belirlemesine izin verin
  6. %s format belirleyicisi ile printf kullanarak her üç dizeyi de yazdırın
  7. Her bir karakter dizisinin ne kadar bellek kapladığını göstermek için sizeof kullanarak her dizinin boyutunu yazdırın

Çıktınız sonuçları aşağıdaki formatta görüntülemelidir:

greeting: Hello
message: Welcome
word: Programming
Size of greeting: 6
Size of message: 20
Size of word: 12

Bu görev, dizeleri depolamak için karakter dizilerinin nasıl tanımlanacağını, dize sabitlerinin karakter dizilerine atandığında nasıl otomatik olarak null ile sonlandırıldığını ve başlatma sırasında boyut belirtimini atladığınızda C'nin dizi boyutlarını nasıl otomatik olarak hesapladığını anlama düzeyinizi test eder.

Kopya kağıdı

C'de dizeler, karakter dizileri olarak temsil edilir. Yerleşik bir dize veri türü yoktur.

Belirli bir boyuta sahip bir karakter dizisi bildirin:

char greeting[6];  // 5 karakter + sonlandırıcı tutabilir
char message[20]; // 19 karaktere kadar + sonlandırıcı tutabilir

Bir dize sabiti ile başlatın:

char greeting[6] = "Hello";
// Şunları depolar: 'H', 'e', 'l', 'l', 'o' ve özel bir sonlandırıcı

C'nin dizi boyutunu otomatik olarak belirlemesine izin verin:

char greeting[] = "Hello";  // C bunu otomatik olarak 6 boyutunda yapar

%s format belirleyicisini kullanarak dizeleri yazdırın:

printf("%s", greeting);

sizeof kullanarak dizi boyutunu alın:

sizeof(greeting)  // Dizi tarafından kaplanan toplam bayt sayısını döndürür

Kendin dene

#include <stdio.h>

int main() {
    // TODO: Kodunuzu buraya yazın
    // Karakter dizilerini görevde belirtildiği gibi tanımlayın ve başlatın
    
    // Dizeleri ve boyutlarını yazdırın
    printf("greeting: %s\n", greeting);
    printf("message: %s\n", message);
    printf("word: %s\n", word);
    printf("Size of greeting: %lu\n", sizeof(greeting));
    printf("Size of message: %lu\n", sizeof(message));
    printf("Size of word: %lu\n", sizeof(word));

    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.

Logic & Flow bölümündeki tüm dersler