Menu
CoddyTech

Chuỗi dưới dạng mảng char

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 12 trên 63.

Trong C, không có kiểu dữ liệu chuỗi tích hợp sẵn như bạn có thể thấy trong các ngôn ngữ lập trình khác. Thay vào đó, chuỗi được biểu diễn dưới dạng mảng ký tự. Đây là khái niệm nền tảng, rất cần thiết để hiểu cách xử lý văn bản trong lập trình C.

Chuỗi (string) trong C đơn giản là một dãy ký tự (character) được lưu ở các vị trí bộ nhớ liên tiếp. Để tạo một chuỗi, bạn khai báo một mảng (array) ký tự đủ lớn để chứa tất cả ký tự cần dùng, cộng thêm một vị trí để lưu ký tự kết thúc đặc biệt.

char greeting[6];  // Chứa được 5 ký tự (character) + ký tự kết thúc
char message[20]; // Chứa được tối đa 19 ký tự + ký tự kết thúc

Cách thuận tiện nhất để làm việc với chuỗi là khởi tạo chúng trực tiếp bằng một giá trị chuỗi cố định khi khai báo mảng. C tự động xử lý các chi tiết lưu từng ký tự trong mảng:

char greeting[6] = "Hello";
// Mảng này lưu: 'H', 'e', 'l', 'l', 'o' và một ký tự kết thúc đặc biệt

Bạn cũng có thể để C tự xác định kích thước mảng bằng cách bỏ qua phần khai báo kích thước khi khởi tạo bằng một chuỗi ký tự:

char greeting[] = "Hello";  // C tự động đặt kích thước này là 6

Hiểu rằng chuỗi là mảng ký tự rất quan trọng vì điều đó giúp bạn biết cách C xử lý dữ liệu văn bản và chuẩn bị cho bạn sử dụng các hàm thao tác chuỗi hoạt động trên những mảng ký tự này.

challenge icon

Thử thách

Dễ

Viết một chương trình C minh họa cách tạo và sử dụng mảng ký tự để lưu trữ chuỗi. Chương trình của bạn cần:

  1. Khai báo một mảng ký tự tên là greeting có đủ chỗ để chứa chuỗi "Hello" (nhớ tính cả ký tự kết thúc null)
  2. Khởi tạo mảng greeting bằng chuỗi ký tự "Hello"
  3. Khai báo mảng ký tự thứ hai tên là message gồm 20 phần tử
  4. Khởi tạo mảng message bằng chuỗi ký tự "Welcome"
  5. Khai báo mảng ký tự thứ ba tên là word mà không chỉ định kích thước, rồi để C tự xác định kích thước bằng cách khởi tạo mảng với "Programming"
  6. In cả ba chuỗi bằng printf với chỉ định định dạng %s
  7. In kích thước của từng mảng bằng sizeof để minh họa lượng bộ nhớ mà mỗi mảng ký tự chiếm dụng

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

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

Thử thách này kiểm tra mức độ hiểu biết của bạn về cách khai báo mảng ký tự để lưu trữ chuỗi, cách các chuỗi ký tự tự động được kết thúc bằng ký tự null khi gán cho mảng ký tự, và cách C tự động tính kích thước mảng khi bạn bỏ qua phần chỉ định kích thước trong lúc khởi tạo.

Tự làm thử

#include <stdio.h>

int main() {
    // TODO: Viết code của bạn tại đây
    // Khai báo và khởi tạo các mảng ký tự (character arrays) theo yêu cầu của thử thách
    
    // In ra các chuỗi (strings) và kích thước của chúng
    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 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