Bài giảng Phương pháp lập trình - Chương 7: Chuỗi ký tự
1. Kí tự 2. Giới thiệu chuỗi 3. Khai báo và khởi tạo chuỗi 4. Nhập, xuất chuỗi 5. Một số hàm thao tác trên chuỗi 6. Mảng chuỗi 7. Mảng con trỏ chuỗi
Bạn đang xem trước 20 trang tài liệu Bài giảng Phương pháp lập trình - Chương 7: Chuỗi ký tự, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CHUỖI KÝ TỰChương 7Nội dung trình bàyKí tựGiới thiệu chuỗiKhai báo và khởi tạo chuỗiNhập, xuất chuỗiMột số hàm thao tác trên chuỗiMảng chuỗiMảng con trỏ chuỗi1. Kí tự: Khai báoKhai báo:Ví dụ: char ch;Trong bộ nhớ, biến kí tự không lưu kí tự mà lưu mã ASCII của nó, do đó có thể viết:ch = 97; thay cho ch='a';Hàm nhập ký tự: getchar()Ví dụ: char ch; ch = getchar();Hàm xuất ký tự: putchar(char)Ví dụ: putchar(ch);Các hàm trên kí tự thuộc thư viện stdio.h, ctype.hchar Tên_biến;1. Kí tự: Một số hàm (ctype.h)int isalpha(int ch): hàm trả về số khác 0 nếu ch là kí tự chữ cái, ngược lại hàm trả về 0Ví dụ: int i = isalpha(‘x’); // i!=0 int j = isalpha(‘1’); // j=0int isdigit(int ch): hàm trả về số khác 0 nếu ch là kí tự chữ số, ngược lại hàm trả về 0Ví dụ: int i = isalpha(‘x’); // i=0 int j = isalpha(‘1’); // j!=0int isascii(int ch): hàm trả về số khác 0 nếu ch là một ký tự có mã ASCII #include #include #include void main(){ const int MAX=80; for ( int i=0; i#include void main(){ char str[20]; // hoặc char *str; couts2số âm nếu s1s2số âm nếu s1>h;p = strchr(s, h);if (p==NULL) cout<<"Khong tim thay ";else cout<<"Tim thay tai vi tri "<<(p-s);5. Một số hàm trên chuỗi (tt)strstr(char* s1, char* s2): Hàm tìm xem s2 có trong s1 hay không, nếu có thì trả về con trỏ trỏ đến vị trí xuất hiện đầu tiên của chuỗi s2 trong s1, nếu không có hàm trả về NULLVí dụ:char *p, s1[20], s2[20];cout<<"Nhap chuoi 1: "; gets(s1);cout<<"Nhap chuoi 2: "; gets(s2);p = strstr(s1, s2);if (p==NULL) cout<<"Khong tim thay";else cout<<"Tim thay tai vi tri "<<(p-s1);5. Một số hàm trên chuỗi (tt)Một số hàm chuyển đổi chuỗi, trong thư viện stdlib.hatoi(s): hàm chuyển chuỗi số s thành kiểu intatof(s): hàm chuyển chuỗi số s thành kiểu floatatol(s): hàm chuyển chuỗi số s thành kiểu longVí dụ:char s[20];strcpy(s, "123.45"); // không được viết s=“123.45”;int d=atoi(s); float f=atof(s); cout<<d<<endl; // d=123cout<<f; // f=123.45Nội dung trình bàyKí tựGiới thiệu chuỗiKhai báo và khởi tạo chuỗiNhập, xuất chuỗiMột số hàm thao tác trên chuỗiMảng chuỗiMảng con trỏ chuỗi6. Mảng chuỗi: Giới thiệuMảng chuỗi là một mảng ký tự hai chiềuVí dụ: char arrS[5][80];Kích thước của chỉ mục thứ nhất là số lượng chuỗi và kích thước của chỉ mục thứ hai xác định chiều dài lớn nhất của mỗi chuỗiVí dụ trên là khai báo một mảng 5 chuỗi, mỗi chuỗi có chiều dài tối đa là 79 ký tựKhai báo và khởi tạo mảng chuỗiVí dụ: char dsNN[][10]={"Pascal", "C++", "Java"};char Tên_Mảng[][độ_dài] = {"Chuoi 1", , "Chuoi n"};6. Mảng chuỗi: Ví dụvoid NhapMangChuoi(char s[][20], int n){ for ( int i=0; i<n; i++ ) { cout<<"Nhap chuoi thu "<<i+1<<": "; gets(s[i]); }}void XuatMangChuoi(char s[][20], int n){ for ( int i=0; i<n; i++ ){ cout<<"Chuoi thu "<<i+1<<" : "; puts(s[i]); }}Nội dung trình bàyKí tựGiới thiệu chuỗiKhai báo và khởi tạo chuỗiNhập, xuất chuỗiMột số hàm thao tác trên chuỗiMảng chuỗiMảng con trỏ chuỗi7. Mảng con trỏ chuỗiNgoài cách dùng mảng ký tự hai chiều để lưu trữ mảng chuỗi, ta có thể dùng mảng con trỏMỗi con trỏ sẽ chứa địa chỉ của chuỗiVí dụ:char *str[20];7. Mảng con trỏ chuỗi: Ví dụvoid NhapMangConTroChuoi(char *s[], int n){ for ( int i=0; i<n; i++ ){ cout<<"Nhap chuoi thu "<<i+1<<": "; s[i] = new char[20]; // cấp phát vùng nhớ gets(s[i]); }}void XuatMangConTroChuoi(char *s[], int n){ for ( int i=0; i<n; i++ ){ cout<<"Chuoi thu "<<i+1<<": "; puts(s[i]); }}