Lập trình căn bản - Chương 8: Chuỗi ký tự

Cú pháp: char <Biến> [Chiều dài tối đa]

Ví dụ: Trong chương trình, ta có khai báo:

char Ten[12];

Trong khai báo này, bộnhớsẽcung cấp 12+1 bytes đểlưu trữnội dung

của chuỗi ký tựTen; byte cuối cùng lưu trữký tự‘\0’ đểchấm dứt chuỗi.

Ghi chú:

- Chiều dài tối đa của biến chuỗi là một hằng nguyên nằmtrong khoảng từ1

đến 255 bytes.

- Chiều dài tối đa không nên khaibáo thừa đểtránh lãng phí bộnhớ, nhưng

cũng không nên khai báo thiếu.

pdf7 trang | Chuyên mục: C/C++ | Chia sẻ: dkS00TYs | Lượt xem: 5289 | Lượt tải: 3download
Tóm tắt nội dung Lập trình căn bản - Chương 8: Chuỗi ký tự, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
 KÝ TỰ 
Học xong chương này, sinh viên sẽ nắm được các vấn đề sau: 
ƒ Khái niệm về chuỗi ký tự. 
ƒ Một số hàm xử lý chuỗi và ứng dụng của chúng trong thực tế. 
I. 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 “”. 
II. KHAI BÁO 
II.1 Khai báo theo mảng 
 Cú pháp: char [Chiều dài tối đa] 
 Ví dụ: Trong chương trình, ta có khai báo: 
 char Ten[12]; 
 Trong khai báo này, bộ nhớ sẽ cung cấp 12+1 bytes để lưu trữ nội dung 
của chuỗi ký tự Ten; byte cuối cùng lưu trữ ký tự ‘\0’ để chấm dứt chuỗi. 
 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. 
 - Chiều dài tối đa không nên khai báo thừa để tránh lãng phí bộ nhớ, nhưng 
cũng không nên khai báo thiếu. 
II.2 Khai báo theo con trỏ 
 Cú pháp: char * 
 Ví dụ: Trong chương trình, ta có khai báo: 
 char *Ten; 
 Trong khai báo này, bộ nhớ sẽ dành 2 byte để lưu trữ địa chỉ của biến 
con trỏ Ten đang chỉ đến, chưa cung cấp nơi để lưu trữ dữ liệu. Muốn có chỗ để lưu 
trữ dữ liệu, ta phải gọi đến hàm malloc() hoặc calloc() có trong “alloc.h”, sau đó mới 
gán dữ liệu cho biến. 
II.3 Vừa khai báo vừa gán giá trị 
 Cú pháp: char []= 
 Ví dụ: 
 #include 
 #include 
 int main() 
 { 
 char Chuoi[]="Mau nang hay la mau mat em” ; 
Trang 92 
Lập trình căn bản 
 printf("Vua khai bao vua gan trị : %s”,Chuoi) ; 
 getch(); 
 return 0; 
 } 
 * 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ự. 
III. CÁC THAO TÁC TRÊN CHUỖI KÝ TỰ 
III.1. Nhập xuất chuỗi 
III.1.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() 
 Ví dụ: char Ten[20]; 
 gets(Ten); 
 Ta cũng có thể sử dụng hàm scanf() để nhập dữ liệu cho biến chuỗi, tuy nhiên 
lúc này ta chỉ có thể nhập được một chuỗi không có dấu khoảng trắng. 
 Ngoài ra, hàm cgets() (trong conio.h) cũng được sử dụng để nhập chuỗi. 
III.1.2 Xuất chuỗi lên 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() 
 Ví dụ: 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 
#include 
#include 
int main() 
{ 
 char Ten[12]; 
 printf("Nhap chuoi: ");gets(Ten); 
 printf("Chuoi vua nhap: ");puts(Ten); 
 getch(); 
 return 0; 
} 
 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. 
III.2 Một số hàm xử lý chuỗi (trong string.h) 
III.2.1 Cộng chuỗi - Hàm strcat() 
 Cú pháp: char *strcat(char *des, const char *source) 
 Hàm này có tác dụng ghép chuỗi nguồn vào chuỗi đích. 
 Ví dụ: Nhập vào họ lót và tên của một người, sau đó in cả họ và tên của họ lên 
màn hình. 
#include 
#include 
#include 
Trang 93 
Lập trình căn bản 
int main() 
{ 
 char HoLot[30], Ten[12]; 
 printf("Nhap Ho Lot: ");gets(HoLot); 
 printf("Nhap Ten: ");gets(Ten); 
 strcat(HoLot,Ten); /* Ghep Ten vao HoLot*/ 
 printf("Ho ten la: ");puts(HoLot); 
 getch(); 
 return 0; 
} 
III.2.2 Xác định độ dài chuỗi - Hàm strlen() 
 Cú pháp: int strlen(const char* s) 
 Ví dụ: Sử dụng hàm strlen xác định độ dài một chuỗi nhập từ bàn phím. 
#include 
#include 
#include 
int main(){ 
 char Chuoi[255]; 
 int Dodai; 
 printf("Nhap chuoi: ");gets(Chuoi); 
 Dodai = strlen(Chuoi) 
 printf("Chuoi vua nhap: ");puts(Chuoi); 
 printf(“Co do dai %d”,Dodai); 
 getch(); 
 return 0; 
} 
III.2.3 Đổi một ký tự thường thành ký tự hoa - Hàm toupper() 
 Hàm toupper() (trong ctype.h) được dùng để chuyển đổi một ký tự thường 
thành ký tự hoa. 
 Cú pháp: char toupper(char c) 
III.2.4 Đổi chuỗi chữ thường thành chuỗi chữ hoa, hàm strupr() 
Hàm struppr() được dùng để chuyển đổi chuỗi chữ thường thành chuỗi chữ hoa, 
kết quả trả về của hàm là một con trỏ chỉ đến địa chỉ chuỗi được chuyển đổi. 
 Cú pháp: char *strupr(char *s) 
 Ví dụ: Viết chương trình nhập vào một chuỗi ký tự từ bàn phím. Sau đó sử dụng 
hàm strupr() để chuyển đổi chúng thành chuỗi chữ hoa. 
#include 
#include 
#include 
int main() 
{ 
 char Chuoi[255],*s; 
 printf("Nhap chuoi: ");gets(Chuoi); 
 s=strupr(Chuoi) ; 
 printf(“Chuoi chu hoa: ”);puts(s); 
 getch(); 
 return 0; 
} 
Trang 94 
Lập trình căn bản 
III.2.5 Đổi chuỗi chữ hoa thành chuỗi chữ thường, hàm strlwr() 
 Muốn chuyển đổi chuỗi chữ hoa thành chuỗi toàn chữ thường, ta sử dụng hàm 
strlwr(), các tham số của hàm tương tự như hàm strupr() 
 Cú pháp: char *strlwr(char *s) 
III.2.6 Sao chép chuỗi, hàm strcpy() 
 Hàm này được dùng để sao chép toàn bộ nội dung của chuỗi nguồn vào chuỗi 
đích. 
 Cú pháp: char *strcpy(char *Des, const char *Source) 
 Ví dụ: Viết chương trình cho phép chép toàn bộ chuỗi nguồn vào chuỗi đích. 
#include 
#include 
#include 
int main() 
{ 
 char Chuoi[255],s[255]; 
 printf("Nhap chuoi: ");gets(Chuoi); 
 strcpy(s,Chuoi); 
 printf(“Chuoi dich: ”);puts(s); 
 getch(); 
 return 0; 
} 
III.2.7 Sao chép một phần chuỗi, hàm strncpy() 
 Hàm này cho phép chép n ký tự đầu tiên của chuỗi nguồn sang chuỗi đích. 
 Cú pháp: char *strncpy(char *Des, const char *Source, size_t n) 
III.2.8 Trích một phần chuỗi, hàm strchr() 
 Để trích một chuỗi con của một chuỗi ký tự bắt đầu từ một ký tự được chỉ định 
trong chuỗi cho đến hết chuỗi, ta sử dụng hàm strchr(). 
 Cú pháp : char *strchr(const char *str, int c) 
 Ghi chú: 
 - Nếu ký tự đã chỉ định không có trong chuỗi, kết quả trả về là NULL. 
 - Kết quả trả về của hàm là một con trỏ, con trỏ này chỉ đến ký tự c được tìm 
thấy đầu tiên trong chuỗi str. 
III.2.9 Tìm kiếm nội dung chuỗi, hàm strstr() 
 Hàm strstr() được sử dụng để tìm kiếm sự xuất hiện đầu tiên của chuỗi s2 trong 
chuỗi s1. 
 Cú pháp: char *strstr(const char *s1, const char *s2) 
 Kết quả trả về của hàm là một con trỏ chỉ đến phần tử đầu tiên của chuỗi s1 có 
chứa chuỗi s2 hoặc giá trị NULL nếu chuỗi s2 không có trong chuỗi s1. 
 Ví dụ: Viết chương trình sử dụng hàm strstr() để lấy ra một phần của chuỗi gốc 
bắt đầu từ chuỗi “hoc”. 
#include 
#include 
#include 
Trang 95 
Lập trình căn bản 
int main() 
{ 
 char Chuoi[255],*s; 
 printf("Nhap chuoi: ");gets(Chuoi); 
 s=strstr(Chuoi,”hoc”); 
 printf(“Chuoi trich ra: ”);puts(s); 
 getch(); 
 return 0; 
} 
III.2.10 So sánh chuỗi, hàm strcmp() 
 Để so sánh hai chuỗi theo từng ký tự trong bảng mã Ascii, ta có thể sử dụng 
hàm strcmp(). 
 Cú pháp: int strcmp(const char *s1, const char *s2) 
 Hai chuỗi s1 và s2 được so sánh với nhau, kết quả trả về là một số nguyên (số 
này có được bằng cách lấy ký tự của s1 trừ ký tự của s2 tại vị trí đầu tiên xảy ra sự 
khác nhau). 
 - Nếu kết quả là số âm, chuỗi s1 nhỏ hơn chuỗi s2. 
 - Nếu kết quả là 0, hai chuỗi bằng nhau. 
 - Nếu kết quả là số dương, chuỗi s1 lớn hơn chuỗi s2. 
III.2.11 So sánh chuỗi, hàm stricmp() 
 Hàm này thực hiện việc so sánh trong n ký tự đầu tiên của 2 chuỗi s1 và s2, 
giữa chữ thường và chữ hoa không phân biệt. 
 Cú pháp: int stricmp(const char *s1, const char *s2) 
 Kết quả trả về tương tự như kết quả trả về của hàm strcmp() 
III.2.12 Khởi tạo chuỗi, hàm memset() 
 Hàm này được sử dụng để đặt n ký tự đầu tiên của chuỗi là ký tự c. 
 Cú pháp: memset(char *Des, int c, size_t n) 
III.2.13 Đổi từ chuỗi ra số, hàm atoi(), atof(), atol() (trong stdlib.h) 
 Để chuyển đổi chuỗi ra số, ta sử dụng các hàm trên. 
 Cú pháp : int atoi(const char *s) : chuyển chuỗi thành số nguyên 
 long atol(const char *s) : chuyển chuỗi thành số nguyên dài 
 float atof(const char *s) : chuyển chuỗi thành số thực 
 Nếu chuyển đổi không thành công, kết quả trả về của các hàm là 0. 
Ngoài ra, thư viện string.h còn hỗ trợ các hàm xử lý chuỗi khác, ta có thể đọc 
thêm trong phần trợ giúp. 
Trang 96 
Lập trình căn bản 
IV. BÀI TẬP 
IV.1 Mục đích yêu cầu 
Đi sâu vào kiểu dữ liệu chuỗi và các phép toán trên chuỗi. 
IV.2 Nội dung 
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 mã Ascii của 
từng ký tự có trong chuỗ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”. 
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. 
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ự. 
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 
6. Viết chương trình nhập vào một chuỗi rồi xuất chuỗi đó ra màn hình dưới dạng mỗi 
từ một dòng. 
Ví dụ: “Nguyễn Văn Minh” 
In ra : 
Nguyễn 
Văn 
Minh 
7. Viết chương trình nhập vào một chuỗi, in ra chuỗi đảo ngược của nó theo từng từ. 
Ví dụ : chuỗi “Nguyễn Văn Minh” đảo thành “Minh Văn Nguyễn” 
8. Viết chương trình đổi số tiền từ số thành chữ. 
9. 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ừ. 
10. 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 bên 
phải, trái và các khoảng trắng không có nghĩa trong chuỗi. In ra màn hình toàn bộ họ 
tên người đó dưới dạng chữ hoa, chữ thường. 
11. 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. 
Trang 97 
Lập trình căn bản 
12. Viết chương trình nhập vào một danh sách họ và tên của n người, tách tên từng 
người ra khỏi họ và tên rồi sắp xếp danh sách tên theo thứ tự từ điển. In danh sách họ 
và tên sau khi đã sắp xếp. 
Trang 98 

File đính kèm:

  • pdfLập trình căn bản - Chương 8 Chuỗi ký tự.pdf