Menu
Coddy logo textTech

Null Sonlandırıcı

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

C'deki dizelerin karakter dizileri olduğunu öğrendiniz, ancak düzgün çalışmalarını sağlayan çok önemli bir ayrıntı vardır: her C dizesi, \0 olarak yazılan ve null sonlandırıcı adı verilen özel bir karakterle bitmelidir.

Null sonlandırıcı, bir dizenin sonunu belirten, ASCII değeri sıfır olan bir karakterdir. Bu karakter olmadan printf gibi işlevler dizenizin nerede bittiğini bilemez ve rastgele bir sıfır baytına denk gelene kadar belleği okumaya devam eder; bu da çoğu zaman anlamsız bir çıktı üretir.

char word[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
// \0, C'ye şunu söyler: "Dize burada biter"

Bir string'i "Hello" gibi bir sabit (literal) ile başlattığınızda, C sizin için null sonlandırıcıyı otomatik olarak ekler. Ancak bir string'i karakter karakter manuel olarak oluşturduğunuzda, sonuna \0 eklemeyi unutmamalısınız.

Bu null sonlandırıcı, "Hello" gibi 5 karakterlik bir kelimenin neden 6 elemanlı bir karakter dizisine ihtiyaç duyduğunun sebebidir - \0 için fazladan bir alan. Bu kavramı anlamak önemlidir çünkü tüm C dizgi fonksiyonlarının dizgilerin nerede başlayıp nerede bittiğini nasıl belirlediğinin temelidir.

challenge icon

Görev

Kolay

Uygun null sonlandırmayla karakter karakter manuel başlatma kullanarak dizeler oluşturmayı ve dizelerle çalışmayı gösteren bir C programı yazın. Programınız şunları yapmalıdır:

  1. Tam olarak 5 öğeye sahip name adlı bir karakter dizisi bildirin
  2. Uygun null sonlandırmayla name dizisini karakter karakter manuel olarak başlatıp "John" yazmasını sağlayın:
    • Birinci öğe: 'J'
    • İkinci öğe: 'o'
    • Üçüncü öğe: 'h'
    • Dördüncü öğe: 'n'
    • Beşinci öğe: '\0' (null sonlandırıcı)
  3. Tam olarak 7 öğeye sahip city adlı ikinci bir karakter dizisi bildirin
  4. Uygun null sonlandırmayla city dizisini karakter karakter manuel olarak başlatıp "Boston" yazmasını sağlayın:
    • 'B', 'o', 's', 't', 'o', 'n' ve '\0' için ayrı karakter atamaları kullanın
  5. Her iki dizeyi de printf biçim belirleyicisiyle %s kullanarak yazdırın
  6. 4 öğeye sahip test adlı üçüncü bir karakter dizisi oluşturarak null sonlandırma olmadan neler olduğunu gösterin
  7. test dizisini yalnızca 'A', 'B', 'C', 'D' karakterleriyle başlatın (null sonlandırıcı olmadan)
  8. Öngörülemeyen çıktıyı göstermek için test dizisini %s kullanarak yazdırın

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

Name: John
City: Boston
Test without null terminator: ABCD[unpredictable characters]

Bu görev, manuel dize oluşturma konusundaki anlayışınızı, C dizelerindeki null sonlandırıcının '\0' kritik önemini ve printf işlevinin %s ile dizenin nerede bittiğini belirlemek için null sonlandırıcıyı bulmaya nasıl dayandığını sınar.

Kendin dene

#include <stdio.h>

int main() {
    // YAPILACAK: Kodunuzu buraya yazın
    // Karakter dizilerini belirtildiği gibi tanımlayın ve başlatın
    
    // Sonuçları 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