Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 51 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
51
Dung lượng
193,78 KB
Nội dung
ThS. Đỗ Đình Trang KỸ THUẬT LẬPTRÌNH dodinhtrang@gmail.com ThS. Đỗ Đình Trang CHƯƠNG 4 : CHUỖI dodinhtrang@gmail.com Bài giảng: KỸ THUẬT LẬPTRÌNH ThS. Đỗ Đình Trang 3 Khái niệm Các chuỗi trong C được cài đặt như là các mảng ký tự kết thúc bởi ký tự NULL (‘\0’) Các biến và hằng kiểu chuỗi: Các biến chuỗi được sử dụng để lưu trữ một chuỗi các ký tự và phải được khai báo trước khi sử dụng Một hằng chuỗi là một dãy các ký tự nằm trong dấu nháy kép Mỗi ký tự trong một chuỗi được lưu trữ như là một phần tử của mảng Bài giảng: KỸ THUẬT LẬPTRÌNH ThS. Đỗ Đình Trang 4 Khai báo chuỗi char Array-Name[Array-Size]; char Array-Name[]; char *Array-Name; Có thể gán giá trị cho chuỗi ký tự bằng những cách sau: char arr_str[7] = {`H', `e', `l', `l', `o', `!', `\0'}; char str[7] = "Hello!"; char str[] = "I like C."; char *ptr_str = "I teach myself C."; Bài giảng: KỸ THUẬT LẬPTRÌNH ThS. Đỗ Đình Trang 5 Phân biệt giữa ký tự và chuỗi ký tự: char ch = `x'; /*1 byte*/ char str[] = "x"; /*2 bytes*/ Con trỏ trỏ đến chuỗi Chuỗi có thể được lưu và truy cập bằng cách sử dụng con trỏ kiểu ký tự. Một con trỏ kiểu ký tự trỏ đến một chuỗi được khai báo như sau: char *ptr_str; ptr_str = "A character string."; Khai báo chuỗi (tt) ptr_str = `x'; /* Sai */ *ptr_str = `x'; /* Đúng */ Bài giảng: KỸ THUẬT LẬPTRÌNH ThS. Đỗ Đình Trang 6 Nhập xuất chuỗi Các thao tác nhập/xuất (I/O) chuỗi trong C được thực hiện bằng cách gọi các hàm Các hàm này là một phần của thư viện nhập/xuất chuẩn tên stdio.h Hàm gets() dùng để đọc các ký tự từ một giao tiếp nhập chuẩn (stdin). Cú pháp : gets(str); trong đó str là một mảng ký tự đã được khai báo Hàm puts() dùng để xuất các ký tự cho một giao tiếp xuất chuẩn (stdout). Cú pháp : puts(str); Bài giảng: KỸ THUẬT LẬPTRÌNH ThS. Đỗ Đình Trang 7 Ví dụ về nhập xuất chuỗi void main() { char name[20]; clrscr(); puts("Enter your name:"); gets(name); puts("Hi there: "); puts(name); getch(); } void main() { char str[80]; int i=0, delt = `a' - `A'; gets( str ); while (str[i]){ if ((str[i] >= `a') && (str[i] <= `z')) str[i] -= delt; ++i; } puts( str ); } Bài giảng: KỸ THUẬT LẬPTRÌNH ThS. Đỗ Đình Trang 8 Các thao tác Nhập/Xuất chuỗi có định dạng Có thể sử dụng các hàm scanf() và printf() để nhập và hiển thị các giá trị chuỗi Cú pháp để nhập một chuỗi như sau: scanf(“%s”, str); Định dạng %s cho biết rằng một giá trị chuỗi sẽ được nhập vào Cú pháp để hiển thị chuỗi: printf(“%s”, str); Nhập xuất chuỗi (tt) Bài giảng: KỸ THUẬT LẬPTRÌNH ThS. Đỗ Đình Trang 9 Các hàm về chuỗi Các hàm này có thể tìm thấy trong tập tin string.h strlen(char *str): Xác định chiều dài của chuỗi str char str1[] = {`A', ` `,`s', `t', `r', `i', `n', `g', ` `,`c', `o', `n', `s', `t', `a', `n', `t', `\0'}; char str2[] = "Another string constant"; char *ptr_str = "Assign a string to a pointer."; printf(“str1 is: %d bytes\n", strlen(str1)); // 17 printf(“str2 is: %d bytes\n", strlen(str2)); // 23 printf(“ptr_str is: %d bytes\n",strlen(ptr_str)); // 29 Bài giảng: KỸ THUẬT LẬPTRÌNH ThS. Đỗ Đình Trang 10 Định vị một ký tự trong chuỗi : strchr() Xác định vị trí xuất hiện của một ký tự trong một chuỗi Cú pháp hàm là: strchr(str, chr); str là một mảng ký tự hay chuỗi. chr là một biến ký tự chứa giá trị cần tìm. Hàm trả về con trỏ trỏ đến giá trị tìm được đầu tiên trong chuỗi, hoặc NULL nếu không tìm gặp thấy Các hàm về chuỗi (tt)