Chuỗi trong C là mảng các ký tự kết thúc bằng ký tự null (\0). Ký tự null này được trình biên dịch tự động thêm vào cuối chuỗi, không do người dùng đặt.
Khác biệt mảng và chuỗi: Mảng ký tự thông thường không có ký tự null kết thúc, còn chuỗi thì có.
Cú pháp khai báo
char tenChuoi[kichThuoc];
Khởi tạo chuỗi
char tenChuoi[kichThuoc] = "chuoi";
char tenChuoi[kichThuoc] = { 'c','h','u','o','i','\0' };
Các hàm xử lý chuỗi phổ biến (thư viện <string.h>)
| Hàm | Chức năng |
|---|---|
| strcpy(s1, s2) | Sao chép chuỗi s2 vào s1 |
| strcat(s1, s2) | Nối chuỗi s2 vào cuối s1 |
| strlen(s1) | Trả về độ dài chuỗi s1 |
| strcmp(s1, s2) | So sánh 2 chuỗi: trả 0 nếu bằng, >0 nếu s1>s2, <0 nếu s1<s2 (theo ASCII) |
| strchr(s1, ch) | Trả về con trỏ đến lần đầu xuất hiện ký tự ch trong s1 |
| strstr(s1, s2) | Trả về con trỏ đến lần đầu xuất hiện chuỗi s2 trong s1 |
Ví dụ
#include <stdio.h>
#include <string.h>
int main() {
char s1[20] = "Hello";
char s2[20] = "World";
int len, com;
strcpy(s1, s2);
printf("s1 và s2: %s\t%s\n", s1, s2);
strcat(s1, s2);
printf("Nối chuỗi: %s\n", s1);
len = strlen(s1);
printf("Độ dài s1: %d\n", len);
com = strcmp(s1, s2);
printf("So sánh s1 và s2: %d\n", com);
return 0;
}
Kết quả
s1 và s2: World World Nối chuỗi: WorldWorld Độ dài s1: 10 So sánh s1 và s2: 87
Lưu ý quan trọng: Kích thước mảng phải đủ lớn để chứa chuỗi kết quả (kể cả ký tự \0), tránh tràn bộ nhớ (buffer overflow).