Menu-ngang

☰ MENU

20/03/2022

Chương 7: Chuỗi ký tự

 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];

 Ghi chú:

- 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    Thc 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.