Menu
CoddyTech

Ký tự kết thúc null

Thuộc phần Logic và luồng điều khiển trong hành trình C của Coddy. Bài học 13 trên 63.

Bạn đã học rằng chuỗi trong C là mảng ký tự, nhưng có một chi tiết quan trọng giúp chúng hoạt động đúng: mọi chuỗi C phải kết thúc bằng một ký tự đặc biệt gọi là ký tự kết thúc null, được viết là \0.

Ký tự kết thúc null là ký tự có giá trị ASCII bằng 0, đánh dấu điểm kết thúc của chuỗi. Nếu không có ký tự này, các hàm như printf sẽ không biết chuỗi kết thúc ở đâu và tiếp tục đọc bộ nhớ cho đến khi tình cờ gặp một byte bằng 0, thường tạo ra đầu ra rác.

char word[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
// \0 báo cho C biết: "The string ends here"

Khi khởi tạo chuỗi bằng một giá trị cố định như "Hello", C tự động thêm ký tự kết thúc null cho bạn. Nhưng khi tự tạo chuỗi từng ký tự một, bạn phải nhớ thêm \0 vào cuối.

Ký tự kết thúc null này là lý do một từ có 5 ký tự như "Hello" cần mảng ký tự có 6 phần tử, thêm một chỗ cho \0. Hiểu khái niệm này rất quan trọng vì đây là nền tảng giúp các hàm chuỗi trong C xác định vị trí bắt đầu và kết thúc của chuỗi.

challenge icon

Thử thách

Dễ

Viết chương trình C minh họa cách tạo và thao tác với chuỗi bằng cách khởi tạo thủ công từng ký tự, đồng thời kết thúc bằng ký tự null đúng cách. Chương trình của bạn cần:

  1. Khai báo một mảng ký tự có tên name gồm chính xác 5 phần tử
  2. Khởi tạo thủ công mảng name bằng cách gán lần lượt từng ký tự để tạo thành "John", đồng thời kết thúc bằng ký tự null đúng cách:
    • Phần tử thứ nhất: 'J'
    • Phần tử thứ hai: 'o'
    • Phần tử thứ ba: 'h'
    • Phần tử thứ tư: 'n'
    • Phần tử thứ năm: '\0' (ký tự kết thúc null)
  3. Khai báo mảng ký tự thứ hai có tên city gồm chính xác 7 phần tử
  4. Khởi tạo thủ công mảng city bằng cách gán lần lượt từng ký tự để tạo thành "Boston", đồng thời kết thúc bằng ký tự null đúng cách:
    • Gán riêng từng ký tự 'B', 'o', 's', 't', 'o', 'n' và '\0'
  5. In cả hai chuỗi bằng printf với chỉ định định dạng %s
  6. Minh họa điều gì xảy ra khi không có ký tự kết thúc null bằng cách tạo mảng ký tự thứ ba có tên test gồm 4 phần tử
  7. Chỉ khởi tạo test bằng các ký tự 'A', 'B', 'C', 'D' (không có ký tự kết thúc null)
  8. In mảng test bằng %s để cho thấy kết quả không thể dự đoán

Kết quả của bạn cần hiển thị theo định dạng sau:

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

Thử thách này kiểm tra mức độ hiểu của bạn về cách tạo chuỗi thủ công, tầm quan trọng thiết yếu của ký tự kết thúc null '\0' trong chuỗi C và cách printf với %s dựa vào việc tìm ký tự kết thúc null để xác định vị trí kết thúc chuỗi.

Tự làm thử

#include <stdio.h>

int main() {
    // TODO: Viết code tại đây
    // Khai báo và khởi tạo các mảng (array) ký tự (character) theo yêu cầu
    
    // In ra kết quả
    
    return 0;
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng điều khiển

Tự luyện tập: Trình biên dịch C online