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ı tutabilirDizelerle ç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 yaparDizelerin 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.
Görev
KolayDizeleri 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:
- "Hello" dizesini tutacak kadar alana sahip (null sonlandırıcıyı hesaba katmayı unutmayın)
greetingadında bir karakter dizisi tanımlayın greetingdizisini "Hello" dize sabiti ile başlatın- 20 elemanlı
messageadında ikinci bir karakter dizisi tanımlayın messagedizisini "Welcome" dize sabiti ile başlatın- Boyut belirtmeden
wordadında üçüncü bir karakter dizisi tanımlayın ve "Programming" ile başlatarak C'nin boyutu otomatik olarak belirlemesine izin verin %sformat belirleyicisi ileprintfkullanarak her üç dizeyi de yazdırın- Her bir karakter dizisinin ne kadar bellek kapladığını göstermek için
sizeofkullanarak 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: 12Bu 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ı tutabilirBir 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ürKendin 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;
}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
1Pointer Temelleri
Pointer Nedir?Pointer TanımlamaAdres Operatörü (&)Dereference Operatörü (*)NULL Pointer'larÖzet: Pointer Temelleri4Proje: Basit Metin Aracı
Projeye Genel BakışKarakter Sayma2İşaretçiler ve Diziler
İşaretçi Olarak Dizi İsimleriDizi Elemanları - İşaretçilerİşaretçi Aritmetiğiİşaretçilerin KarşılaştırılmasıÖzet: İşaretçi ile Dizi Gezinme5İşaretçiler ve Fonksiyonlar
Değer ile GeçmeFonksiyonlara İşaretçi Göndermeİşaretçiler ile Değişkenleri DeğiştirmeKlasik Bir Örnek: SwapFonksiyonlara Dizi GöndermeÖzet: Fonksiyon İşaretçi Argümanları8Yapılar ve İşaretçiler
Yapılara İşaretçilerOk Operatörü (->)Yapıları Değer ile AktarmaYapı İşaretçilerini AktarmaYapıların Dinamik TahsisiÖzet: Yapıyı Değiştirme - Ptr11Son Tekrar Görevleri
Tekrar: Dinamik String BirleştirmeTekrar: Struct DizisiTekrar: Kelime Frekans Sayacı3Karakter Dizileri ve Stringler
char Dizisi Olarak StringlerNull Sonlandırıcıscanf ile String Girişistrlen() Kullanımıstrcpy() Kullanımıstrcat() Kullanımıstrcmp() KullanımıÖzet: Temel String Fonksiyonları