1 1 TIN HỌC ĐẠI CƯƠNG TIN HỌC ĐẠI CƯƠNG PHẦN 2: LẬP TRÌNH BẰNG NGÔN NGỮ C PHẦN 2: LẬP TRÌNH BẰNG NGÔN NGỮ C BÀI 6: XÂU KÝ TỰ BÀI 6: XÂU KÝ TỰ KHOA KHOA C¤NG NGHÖ C¤NG NGHÖ TH¤NG TIN TH¤NG TIN FACULTY OF FACULTY OF INFORMATION TECHNOLOGY INFORMATION TECHNOLOGY 2 2 Nguyễn Thị Thu Trang, SE-FIT-HUT Nguyễn Thị Thu Trang, SE-FIT-HUT BÀI 6: BÀI 6: XÂU KÝ TỰ XÂU KÝ TỰ 6.1. Khái niệm xâu ký tự 6.1. Khái niệm xâu ký tự 6.2. Khai báo và sử dụng xâu 6.2. Khai báo và sử dụng xâu 6.3. Một số hàm làm việc với ký tự và xâu ký tự 6.3. Một số hàm làm việc với ký tự và xâu ký tự trong C. trong C. 6.3.1. Các hàm xử lý ký tự 6.3.1. Các hàm xử lý ký tự 6.3.2. Các hàm xử lý xâu ký tự 6.3.2. Các hàm xử lý xâu ký tự 6.3.3. Một số hàm xử lý xâu ký tự 6.3.3. Một số hàm xử lý xâu ký tự khác khác 6.3.4. Con trỏ và xâu ký tự 6.3.4. Con trỏ và xâu ký tự 3 3 Nguyễn Thị Thu Trang, SE-FIT-HUT Nguyễn Thị Thu Trang, SE-FIT-HUT 6.1. Khái niệm xâu ký tự 6.1. Khái niệm xâu ký tự Là một dãy các kí tự viết liên tiếp Là một dãy các kí tự viết liên tiếp nhau. nhau. Xâu rỗng: Xâu không gồm kí tự nào cả. Xâu rỗng: Xâu không gồm kí tự nào cả. Độ dài xâu: Số kí tự có trong xâu. Độ dài xâu: Số kí tự có trong xâu. Ví dụ: Ví dụ: “ “ Tin hoc” là một xâu kí tự gồm 7 kí tự: Tin hoc” là một xâu kí tự gồm 7 kí tự: ‘T’, ‘i’, ‘n’, dấu cách (‘ ‘), ‘h’, ‘o’, ‘T’, ‘i’, ‘n’, dấu cách (‘ ‘), ‘h’, ‘o’, và ‘c’. và ‘c’. Lưu trữ xâu ký tự: Lưu trữ xâu ký tự: Ký tự kết thúc xâu: NULL hoặc ’\0’. Ký tự kết thúc xâu: NULL hoặc ’\0’. 4 4 Nguyễn Thị Thu Trang, SE-FIT-HUT Nguyễn Thị Thu Trang, SE-FIT-HUT BÀI 6: BÀI 6: XÂU KÝ TỰ XÂU KÝ TỰ 6.1. Khái niệm xâu ký tự 6.1. Khái niệm xâu ký tự 6.2. Khai báo và sử dụng xâu 6.2. Khai báo và sử dụng xâu 6.3. Một số hàm làm việc với ký tự và xâu ký tự 6.3. Một số hàm làm việc với ký tự và xâu ký tự trong C. trong C. 6.3.1. Các hàm xử lý ký tự 6.3.1. Các hàm xử lý ký tự 6.3.2. Các hàm xử lý xâu ký tự 6.3.2. Các hàm xử lý xâu ký tự 6.3.3. Một số hàm xử lý xâu ký tự 6.3.3. Một số hàm xử lý xâu ký tự khác khác 6.3.4. Con trỏ và xâu ký tự 6.3.4. Con trỏ và xâu ký tự 5 5 Nguyễn Thị Thu Trang, SE-FIT-HUT Nguyễn Thị Thu Trang, SE-FIT-HUT 6.2.1. Khai báo xâu ký tự 6.2.1. Khai báo xâu ký tự Cú pháp: Cú pháp: char ten_xau [so_ky_tu_toi_da]; char ten_xau [so_ky_tu_toi_da]; Ví dụ: Ví dụ: char ho_va_ten[20]; char ho_va_ten[20]; 6 6 Nguyễn Thị Thu Trang, SE-FIT-HUT Nguyễn Thị Thu Trang, SE-FIT-HUT 6.2.1. Khai báo xâu ký tự (2) 6.2.1. Khai báo xâu ký tự (2) Ví dụ: Ví dụ: Khai báo xâu ký tự s có độ dài tối đa là Khai báo xâu ký tự s có độ dài tối đa là 30: 30: char s[30]; char s[30]; Khởi tạo giá trị cho xâu ký tự khi khai Khởi tạo giá trị cho xâu ký tự khi khai báo: báo: char s[15] = {‘T', ‘r', ‘u', ‘o', ‘n', ‘g', ‘ ’, ‘D', char s[15] = {‘T', ‘r', ‘u', ‘o', ‘n', ‘g', ‘ ’, ‘D', ‘H’, ‘B', ‘K’, ‘\0' }; ‘H’, ‘B', ‘K’, ‘\0' }; char s[15] = “Truong DHBK”; /*trinh dich tu them \0 char s[15] = “Truong DHBK”; /*trinh dich tu them \0 vao cuoi xau */ vao cuoi xau */ char s[] = “Truong DHBK”;/* trinh dich tu tinh chieu char s[] = “Truong DHBK”;/* trinh dich tu tinh chieu dai xau = 12 */ dai xau = 12 */ 7 7 Nguyễn Thị Thu Trang, SE-FIT-HUT Nguyễn Thị Thu Trang, SE-FIT-HUT 6.2.2. Truy cập vào một phần tử của xâu 6.2.2. Truy cập vào một phần tử của xâu Cú pháp: Cú pháp: ten_xau[chi_so_ky_tu_can_truy_cap] ten_xau[chi_so_ky_tu_can_truy_cap] Ví dụ: Ví dụ: char que_quan[10] = char que_quan[10] = “ “ Ha noi Ha noi ” ” ; ; 8 8 Nguyễn Thị Thu Trang, SE-FIT-HUT Nguyễn Thị Thu Trang, SE-FIT-HUT 6.2.3. Nhập/xuất xâu ký tự 6.2.3. Nhập/xuất xâu ký tự Nhập xâu: Nhập xâu: Sử dụng scanf Sử dụng scanf Cú pháp: scanf(“%s”,biến_xâu_kt); Cú pháp: scanf(“%s”,biến_xâu_kt); char str[10]; char str[10]; scanf(“%s”,str); //không cần &str. scanf(“%s”,str); //không cần &str. Nếu người dùng nhập một xâu có dấu cách thì chỉ phần ký tự nằm trước Nếu người dùng nhập một xâu có dấu cách thì chỉ phần ký tự nằm trước dấu cách đầu tiên được nhập cho xâu ký tự (vd: trong ví dụ trên, nếu dấu cách đầu tiên được nhập cho xâu ký tự (vd: trong ví dụ trên, nếu nhập xâu “Viet Nam” rồi gõ Enter thì s = “Viet”. Phần còn lại được đẩy vào nhập xâu “Viet Nam” rồi gõ Enter thì s = “Viet”. Phần còn lại được đẩy vào bộ đệm). bộ đệm). Sử dụng gets Sử dụng gets Cú pháp: gets(s); Cú pháp: gets(s); Nhập được cả xâu ký tự có dấu cách. Nhập được cả xâu ký tự có dấu cách. Xuất xâu ra màn hình: printf(“%s”,str) hoặc Xuất xâu ra màn hình: printf(“%s”,str) hoặc puts(str) puts(str) 9 9 Nguyễn Thị Thu Trang, SE-FIT-HUT Nguyễn Thị Thu Trang, SE-FIT-HUT 6.2.3. Nhập/xuất xâu ký tự - gets() & printf() 6.2.3. Nhập/xuất xâu ký tự - gets() & printf() /* Minh hoa cach su dung gets() & printf() */ /* Minh hoa cach su dung gets() & printf() */ #include <stdio.h> #include <stdio.h> #include <conio.h> #include <conio.h> void main() void main() { { char ten[80]; char ten[80]; printf("\nXin cho biet ten cua ban : "); printf("\nXin cho biet ten cua ban : "); gets(ten); gets(ten); printf("Chao %s\n", ten); printf("Chao %s\n", ten); getch(); getch(); } } 10 10 Nguyễn Thị Thu Trang, SE-FIT-HUT Nguyễn Thị Thu Trang, SE-FIT-HUT 6.2.3. Nhập/xuất xâu ký tự - scanf() & puts() 6.2.3. Nhập/xuất xâu ký tự - scanf() & puts() /* Minh hoa cach su dung scanf() & puts() */ /* Minh hoa cach su dung scanf() & puts() */ #include <stdio.h> #include <stdio.h> char ho[81], ten[81]; char ho[81], ten[81]; int count, soTheSV; int count, soTheSV; void main() { void main() { puts(“Hay nhap ho, ten va so the SV cach nhau boi"); puts(“Hay nhap ho, ten va so the SV cach nhau boi"); puts(" dau cach roi go Enter "); puts(" dau cach roi go Enter "); count = scanf("%s%s%d", ho, ten, &soTheSV); count = scanf("%s%s%d", ho, ten, &soTheSV); printf("%d muc vua nhap: %s %s %d \n", count, ho, printf("%d muc vua nhap: %s %s %d \n", count, ho, ten, soTheSV); ten, soTheSV); getch(); getch(); } } [...]... printf("\"%s\"\n", chuoikq); getch(); } ©Nguyễn Thị Thu Trang, SE-FIT-HUT 34 char *catKyTuTrongThua(char* s){ char *kq; int k = 0, i; for (i = 0; i . puts(str) puts(str) 9 9 Nguyễn Thị Thu Trang, SE-FIT-HUT Nguyễn Thị Thu Trang, SE-FIT-HUT 6.2.3. Nhập/xuất xâu ký tự - gets() & printf() 6.2.3. Nhập/xuất xâu ký tự - gets() & printf() /* Minh hoa. getch(); getch(); } } 10 10 Nguyễn Thị Thu Trang, SE-FIT-HUT Nguyễn Thị Thu Trang, SE-FIT-HUT 6.2.3. Nhập/xuất xâu ký tự - scanf() & puts() 6.2.3. Nhập/xuất xâu ký tự - scanf() & puts() /* Minh hoa cach. hoặc ’’. Ký tự kết thúc xâu: NULL hoặc ’’. 4 4 Nguyễn Thị Thu Trang, SE-FIT-HUT Nguyễn Thị Thu Trang, SE-FIT-HUT BÀI 6: BÀI 6: XÂU KÝ TỰ XÂU KÝ TỰ 6.1. Khái niệm xâu ký tự 6.1. Khái niệm