Bài giảng Phương pháp lập trình - Chương 7: Chuỗi kí tự (String) - Võ Quang Hoàng Khang

1. Giới thiệu

y Chuổi là một mảng ký tự được kết thúc

bằng ký tự null (‘\0’).

y Ký tự null (‘\0’) là ký tự dùng để kết

thúc chuổi

y Hằng chuổi là chuổi được bao quanh bởi

cặp dấu nháy đôi. Ví dụ: "Hello"

pdf18 trang | Chia sẻ: phuongt97 | Lượt xem: 554 | Lượt tải: 0download
Nội dung tài liệu Bài giảng Phương pháp lập trình - Chương 7: Chuỗi kí tự (String) - Võ Quang Hoàng Khang, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
CHƯƠNG 7 CHUỔI KÝ TỰ (String) 1. Giới thiệu y Chuổi là một mảng ký tự được kết thúc bằng ký tự null (‘\0’). y Ký tự null (‘\0’) là ký tự dùng để kết thúc chuổi y Hằng chuổi là chuổi được bao quanh bởi cặp dấu nháy đôi. Ví dụ: "Hello" 2. Khai báo và khởi tạo chuổi Có 2 cách khai báo và khởi tạo chuổi y Cách 1: Dùng mảng một chiều h Tê biế [Chiề dài tối đ ] Ví d h t [12] c ar u a y ụ: c ar s r ; 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ự str; byte cuối cùng lưu ữ ký ‘\ ’ để kế hú h ỗtr tự 0 t t c c u i. 2. Khai báo và khởi tạo chuổi. Cách 2: Dùng con trỏ char * yVí dụ: char *str; T kh i bá à bộ hớ ẽ dà h 2rong a o n y, n s n byte để lưu trữ địa chỉ của biến con trỏ t đ hỉ đế hư ấ ơi đểs r ang c n, c a cung c p n lưu trữ dữ liệu. 2. Khai báo và khởi tạo chuổi. y Chuổi ký tự giống như mảng do đó để khởi tạo một chuổi ký tự với những giá trị xác định ta có thể thực hiện tương tự như với mảng. char [ ]= 2. Khai báo và khởi tạo chuổi. y Ví dụ: char str[] = {‘H’, ’e’, ’l’, ’l’, ’o’, ’\0’}; char str[] = “Hello”; char *str = “Hello”; 3. Nhập chuổi y Để nhập dữ liệu cho biến chuổi, ta dùng hàm gets() của thư viện stdio.h. h * t ( h * ) y Hàm gets() đọc các ký tự từ bàn phím c ar ge s c ar s ; vào trong mảng trỏ đến bởi s cho đến khi nhấn Enter Ký tự null sẽ được đặt. sau ký tự cuối cùng của chuổi nhập vào trong mảng. y Hoặc ta có thể dùng cin >> s; 4. Xuất chuổi y Để xuất chuổi ra màn hình, ta dùng hàm puts() của thư viện stdio.h. int puts(const char *s); y Hoặc ta có thể dùng cout y cout << s; Ví dụ: #include #include int main() { char str[20]; cout<<"nhap chuoi:"; gets(str); cout<<"\nXuat chuoi:"; puts(str); return 0; } 5. Các hàm thao tác trên chuổi y strcpy(s1, s2): Sao chép chuổi s2 vào s1 í dV ụ: #include #include . #include void main() { char str1[20], str2[20]; t " h h i 1 " t ( t 1)cou << n ap c uo : ; ge s s r ; strcpy(str2,str1); cout<<"\nXuat chuoi 2:"; puts(str2); } 5. Các hàm thao tác trên chuổi y strcat(s1, s2): Nối chuổi s2 vào cuối chuổi s1 Ví d :ụ #include #include #include void main() { char str1[20], str2[20]; cout<<"nhap chuoi 1:"; gets(str1); cout<<"\nhap chuoi 2:"; gets(str2); strcat(str1,str2); cout<<"\nXuat chuoi sau khi noi:"; puts(str1); } 5. Các hàm thao tác trên chuổi y strchr(s1, ch) : Trả về con trỏ đến vị trí ất hiện đầ tiên của ký t ch t ong ch ổi s1xu u ự r u Ví dụ: void main() { char *p, h, str1[20]; cout<<"nhap chuoi 1:”; gets(str1); cout>h; p= strchr(str1 h);, if(p==NULL) cout<<"Khong tim thay "; else cout<<"Tim thay tai vi tri "<<(p-str1); } 5. Các hàm thao tác trên chuổi y strstr(s1, s2): Trả về con trỏ đến vị trí xuất hiện ầ ổđ u tiên của chu i s2 trong s1. Ví dụ: void main() { h * [ ] [ ]c ar p, str1 20 , str2 20 ; cout<<"nhap chuoi 1:"; gets(str1); cout<<"nhap chuoi 2:"; gets(str2); p= strstr(str1,str2); if(p==NULL) cout<<"Khong tim thay "; else cout<<"Tim thay tai vi tri "<<(p-str1); } 6. Mảng các chuổi y Mảng các chuổi là một mảng ký tự hai chiều. Kích thước của chỉ mục thứ nhất là số 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ổi. Ví dụ: char str[5][80]; Khai báo một mảng của 5 chuổi mỗi, chuổi có chiều dài tối đa là 79 ký tự. 6. Mảng các chuổi y Khai báo và khởi tạo mảng các chuổi char arrayList[][length] = { constantString1, constantString2, ... constantStringN}; y Ví dụ: char listOfPL[][10] = {“Pascal”, “C++”, “C#”}; 6. Mảng các chuổi Ví dụ: void main() { h li t[5][20]c ar s ; for(int i=0; i<5; i++) { cout>list[i]; } for(int j=0; j<5; j++) cout<<" "<<list[j]; } 7. Mảng con trỏ đến các chuổi y Ngoài cách dùng mảng ký tự hai chiều để lưu ổ ểtrữ mảng các chu i, ta có th dùng mảng của các con trỏ. Mỗi con trỏ sẽ chứa địa chỉ của chuổi y Ví dụ: h * t [20]c ar s r ; void main() { char *name[5]; for(int i=0 ; i<5 ; i++) name[i] = (char *)malloc(20); for(int i=0 ; i<5 ; i++) { cout << "Input name " << i+1 <<": "; gets(name[i]); } cout << "List of names: "; for(int i=0 ; i<5 ; i++) cout << name[i] << ", "; }

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_phuong_phap_lap_trinh_chuong_7_chuoi_ki_tu_string.pdf