Bài giảng Lập trình - Bài 6: Xử lý chuỗi và con trỏ - Trường Đại học Khoa học tự nhiên TP Hồ Chí Minh
Ý nghĩa khai báo một mảng kiểu ký tự tên là str có 25 phần tử ( như vậy tối đa ta có thể nhập 24 ký tự vì phần tử thứ 25 đã chứa ký tự kết thúc chuỗi ‘\0’.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Lập trình - Bài 6: Xử lý chuỗi và con trỏ - Trường Đại học Khoa học tự nhiên TP Hồ Chí Minh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Lập trình - Bài 6: Xử lý chuỗi và con trỏ - Trường Đại học Khoa học tự nhiên TP Hồ Chí Minh
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN Bài 6: Xử Lý Chuỗi & Con trỏ Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 2 1. Khái niệm và cấu trúc về chuỗi 2. Các hàm nhập xuất chuỗi 3. Một số hàm cơ bản về chuỗi 4. Mảng và chuỗi Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 3 1. Khái niệm • Chuỗi là một mảng ký tự được kết thúc bằng ký tự null (‘\0’). • Ký tự null (‘\0’) là ký tự dùng để kết thúc Chuỗi • Hằng Chuỗi là Chuỗi được bao quanh bởi cặp dấu nháy đôi. Ví dụ: “Hello” • Ví dụ: để khai báo một mảng str chứa chuỗi có độ dài 20 ký tự, ta khai báo: char str[21]; Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 4 1. 1. Khai báo và khởi tạo Chuỗi Có 2 cách khai báo và khởi tạo Chuỗi – Cách 1: Dùng mảng một chiều Ví dụ: char str[12]; char [Chiều dài tối đa] Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 5 1. 1. Khai báo và khởi tạo Chuỗi Ví dụ: char str[25]; Ý nghĩa khai báo một mảng kiểu ký tự tên là str có 25 phần tử ( như vậy tối đa ta có thể nhập 24 ký tự vì phần tử thứ 25 đã chứa ký tự kết thúc chuỗi ‘\0’. Lưu ý: Chuỗi ký tự được kết thúc bằng ký tự ‘\0’. Do đó khi khai báo độ dài của chuỗi luôn luôn khai báo dư 1 phần tử để chứa ký tự ‘\0’. Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 6 − Cách 2: Dùng con trỏ •Ví dụ: char *str; Trong khai báo này, bộ nhớ sẽ dành 2 byte để lưu trữ địa chỉ của biến con trỏ str đang chỉ đến, chưa cung cấp nơi để lưu trữ dữ liệu. char * 1. 1. Khai báo và khởi tạo Chuỗi Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 7 − Cách 2: Dùng con trỏ Trước khi sử dụng phải dùng từ khóa new để cấp phát vùng nhớ. Ví dụ: char *str; str = new char[51];//Cấp phát 51 ký tự 1. 1. Khai báo và khởi tạo Chuỗi Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 8 1. 1. Khai báo và khởi tạo Chuỗi 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 [ ]= Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 9 1. 1. Khai báo và khởi tạo Chuỗi Ví dụ: char str[] = {‘H’, ’e’, ’l’, ’l’, ’o’, ’\0’}; char str[] = “Hello”; char *str = “Hello”; Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 10 2.1. Nhập Chuỗi Để nhập dữ liệu cho biến Chuỗi, ta dùng hàm gets() của thư viện stdio.h. Hàm gets() đọc các ký tự từ bàn phím 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. char *gets(char *s); Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 11 Lưu ý: Khi dùng cin>> để nhập dữ liệu cho chuỗi, chương trình sẽ tự động ngắt chuỗi khi gặp ký tự khoảng trắng trong chuỗi. Do đó, để chuỗi không bị ngắt khi gặp ký tự khoảng trắng, ta sẽ dùng hàm gets(), hoặc cin.getline() thay vì hàm cin thông thường. 2.1. Nhập Chuỗi *cin.getline(chuỗi, số ký tự tối đa); *Ví dụ: char *str; str = new char [30]; cin.getline(str, 30); Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 12 2.2. Xuất Chuỗi Để xuất Chuỗi ra màn hình, ta dùng hàm puts() của thư viện stdio.h. Hoặc ta có thể dùng cout cout << s; int puts(const char *s); Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 13 Ví dụ: #include #include int main() { char str[20]; cout<<“Nhap chuoi:"; gets(str); cout<<"\n Xuat chuoi:"; puts(str); return 0; } 2.2. Xuất Chuỗi Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 14 2.2. Xuất Chuỗi Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 15 3. Các hàm thao tác trên Chuỗi Để sử dụng các hàm này, ta phải khai báo dòng lệnh sau: #include Sao chép nội dung chuỗi nguồn vào chuỗi đích, nội dung của chuỗi đích sẽ bị xóa. strcpy(char *đích, char *nguồn); Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 16 3. Các hàm thao tác trên Chuỗi Ví dụ: strcpy(s1, s2): Sao chép Chuỗi s2 vào s1 #include #include #include void main() { char str1[20], str2[20]; cout<<"nhap chuoi 1:"; gets(str1); strcpy(str2,str1); cout<<"\nXuat chuoi 2:"; puts(str2); } Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 17 3. Các hàm thao tác trên Chuỗi Chép n ký tự từ chuỗi nguồn sang chuỗi đích. Nếu chiều dài nguồn < n thì hàm sẽ điền khoảng trắng cho đủ n ký tự vào đích. strncpy(char *đích, char *nguồn, int n); Ví dụ: Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 18 3. Các hàm thao tác trên Chuỗi Nối chuỗi s2 vào cuối chuỗi s1 strcat(s1, s2) 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); } Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 19 3. Các hàm thao tác trên Chuỗi Nối n ký tự đầu tiên của chuỗi s2 vào chuỗi s1 strncat(char s1[],char s2[],int n); Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN 20 3. Các hàm thao tác trên Chuỗi • strchr(s1, ch) : Trả về con trỏ đến vị trí xuất hiện đầu tiên của ký tự ch trong Chuỗi s1 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);
File đính kèm:
- bai_giang_lap_trinh_bai_6_xu_ly_chuoi_va_con_tro_truong_dai.pdf