7.1. Khái niệm
- Chuỗi ký tự là một dãy gồm các ký tự hoặc một
mảng các ký tự được kết thúc bằng ký tự ‘\0’ (còn được gọi là ký tự NULL trong
bảng mã Ascii).
- Các hằng chuỗi ký tự được đặt trong cặp dấu nháy kép
“”.
- Chuỗi được xem như là một mảng 1 chiều gồm các phần
tử có kiểu char như ký tự, con số và bất cứ ký tự đặc biệt như +, -, *, /, $,
#,…
Theo quy ước, một chuỗi sẽ được kết thúc bởi ký tự null (‘\0’ : kí tựrỗng).
Ví dụ: chuỗi “Hello” được lưu
trữ như sau:
H |
e |
l |
l |
o |
\0 |
Cách lưu trữ chuỗi ký tự
7.2. Khai báo
7.2.1. Khai báo theo mảng
Cú pháp: char <Biến> [Chiều dài
tối đa]
Ví dụ 7.1: Trong chương trình, ta có khai báo:
char Ten[12];
-
Chiều dài tối đa của biến chuỗi là một hằng nguyên nằm trong khoảng từ 1 đến
255 bytes.
7.2.2. Khai báo theo con trỏ
Cú pháp: char *<Biến>
Ví dụ 7.2:
Trong chương trình, ta có khai báo:
char *Ten;
7.2.3. Vừa khai báo vừa gán giá trị
Cú pháp: char <Biến> []= < ” Hằng chuỗi”>
Ví dụ 7.3:
#include<stdio.h>
#include<conio.h>
int
main()
{
char Chuoi[]="Mau
nang hay la mau mat em” ;
printf("Vua khai bao vua gan trị : %s”,Chuoi) ;
getch();
}
* Ghi chú: Chuỗi được khai báo là một mảng các ký tự nên các
thao tác trên mảng có thể áp dụng đối với chuỗi ký tự.
v
Thực hành:
Viết code cho Ví dụ 7.3
v
Bài tập:
Câu 1. Nêu cách khai báo chuỗi theo 3 cách?
7.3.
Các thao tác trên chuỗi
7.3.1.
Nhập chuỗi từ bàn phím
Để nhập một chuỗi ký tự từ bàn
phím, ta sử dụng hàm gets().
Cú pháp: gets(<Biến chuỗi>)
Ví dụ 7.4: Nhập vào một chuỗi tên
char Ten[20];
gets(Ten);
-
Ngoài ra, hàm cgets() (trong conio.h) cũng được sử dụng để nhập chuỗi.
7.3.2.
Xuất chuỗi ra màn hình
Để xuất một chuỗi (biểu thức
chuỗi) lên màn hình, ta sử dụng hàm puts().
Cú
pháp: puts(<Biểu thức chuỗi>)
Ví
dụ 7.5: Nhập vào một chuỗi và hiển thị trên màn hình chuỗi vừa nhập.
#include <conio.h>
#include <stdio.h>
char Ten[12];
int main()
{
printf("Nhap chuoi:
");
gets(Ten);
printf("Chuoi vua nhap:
");
puts(Ten);
getch();
}
Ngoài
ra, ta có thể sử dụng hàm printf(), cputs() (trong conio.h) để hiển thị chuỗi
lên màn hình.
7.3.3. Một số hàm xử lý chuỗi
1)
Gán một chuỗi này bằng một chuỗi khác
Hàm strcpy() sẽ gán chuỗi
source vào chuỗi dest từng phần tử cho đến khi copy kí tự kết thúc chuỗi ‘\0’.
char*strcpy(char*dest,
const char*source);
2) So sánh hai chuỗi kí tự với nhau theo
thứ tự từ điển
int
strcmp(const char*s1, const char*s2);
//phân biệt chữ in và chữ thường
int
strcmpi(const char*s1, const char*s2);//
không phân biệt chữ in và chữ thường
int
stricmp(const char*s1, const char*s2);//
không phân biệt chữ in và chữ thường
- Nếu chuỗi s1 nhỏ hơn chuỗi
s2 thì sẽ trả về một số âm.
- Nếu chuỗi s1 lớn hơn chuỗi
s2 thì sẽ trả về một số dương.
-Nếu hai chuỗi bằng nhau sẽ
trả về số không (0).
3) Cộng hai chuỗi với nhau
Hàm chép chuỗi source vào
cuối chuỗi dest.
char* strcat(char*dest, char*source);
4) Tìm một kí tự nào đó trong một chuỗi cho trước
char*strchr(char*s,char
ch);
5) Tìm độ dài của chuỗi
int strlen(const char*s);
v
Trình tự thực hiện:
B1: Nhập chuỗi từ bàn phím;
B2: Xuất chuỗi ra màn hình;
B3: Một số hàm xử lý chuỗi;
v
Thực
hành:
Bài
1.
Viết chương trình nhập một chuỗi ký tự từ bàn phím, xuất ra màn hình chuỗi vừa
nhập.
Bài
2.
Viết chương trình nhập một chuỗi ký tự từ bàn phím, xuất ra màn hình chuỗi đảo
ngược của chuỗi đó. Ví dụ đảo của “abcd egh” là “hge dcba”.
Bài
3.
Viết chương trình nhập một chuỗi ký tự và kiểm tra xem chuổi đó có đối xứng
không.
Ví dụ : Chuỗi ABCDEDCBA là
chuỗi đối xứng.
Bài
4.
Nhập vào một chuỗi bất kỳ, hãy đếm số lần xuất hiện của mỗi loại ký tự.
Bài
5.
Viết chương trình nhập vào một chuỗi.
- In ra màn hình từ bên trái
nhất và phần còn lại của chuỗi. Ví dụ:
“Nguyễn Văn Minh” in ra thành:
Nguyễn
Văn
Minh
-
In ra màn hình từ bên phải nhất và phần còn lại của chuỗi. Ví dụ: “Nguyễn Văn
Minh” in ra thành:
Minh
Nguyễn
Văn
v
Bài tập:
Bài
1.
Viết chương trình nhập vào họ và tên của một người, cắt bỏ các khoảng trống
không cần thiết (nếu có), tách tên ra khỏi họ và tên, in tên lên màn hình. Chú
ý đến trường hợp cả họ và tên chỉ có một từ.
Bài
2.
Viết chương trình nhập vào một danh sách họ và tên của n người theo kiểu chữ
thường, đổi các chữ cái đầu của họ, tên và chữ lót của mỗi người thành chữ hoa.
In kết
quả lên màn hình.