Các hàm xử lí chuỗi trong C nằm trong thư viện chuẩn String.h. Do đó bất kì chương trình nào có sử dụng đến các hàm xử lí chuỗi phải đưa thư viên này vào bằng lênh include.
Bài 18 Chuỗi Mục tiêu: Kết thúc học này, bạn có thể: Sử dụng hàm chuỗi Truyền mảng vào hàm Truyền chuỗi vào hàm Các bước giải thích chi tiết, đầy đủ Mục đích nắm nội dung lý thuyết sử dụng thành thạo công cụ Hãy làm theo bước cách cẩn thận Phần I – Trong thời gian 30 phút đầu: 18.1 Các hàm chuỗi Các hàm xử lí chuỗi C nằm trong thư viện chuẩn string.h Do chương trình có sử dụng đến hàm xử lí chuỗi phải đưa thư viện vào lệnh include 18.1.1 Sắp xếp chuỗi sử dụng hàm thư viện Các hàm chuỗi dùng để thao tác mảng ký tự Chẳng hạn như, chiều dài chuỗi xác định hàm strlen() Chúng ta viết chương trình C để xếp chuỗi theo độ dài giảm dần Các bước thực liệt kê sau: Như học lý thuyết, C, để sử dụng hàm chuỗi, cần phải đưa vàohai thư viện chuẩn: stdio.h, string.h Câu lệnh là: #include #include Khai báo mảng ký tự để lưu chuỗi Câu lệnh là: char str_arr[5][20]; Nhập vào chuỗi vòng lặp for Câu lệnh là: for(i = 0; i < 5; i++) { printf("\nEnter string %d: ", i + 1); scanf("%s", str_arr[i]); } So sánh chiều dài chuỗi với chuỗi khác, chiều dài chuỗi nhỏ chiều dài chuỗi đứng vị trí phía sau mảng, ta thực đổi chỗ chuỗi cho Câu lệnh là: for(i = 0; i < 4; i++) Chuỗi 251 for(j = i + 1; j < 5; j++) { if(strlen(str_arr[i]) < strlen(str_arr[j])) { strcpy(str, str_arr[i]); strcpy(str_arr[i], str_arr[j]); strcpy(str_arr[j], str); } } Chuỗi str sử dụng thao tác hoán đổi hai chuỗi Hiển thị chuỗi theo thứ tự xếp Câu lệnh là: printf("\nThe strings in descending order of length are:"); for(i = 0; i < 5; i++) printf("\n%s", str_arr[i]); Chúng ta xem chương trình hồn chỉnh Mở chương trình soạn thảo mà bạn dùng để gõ chương trình C Tạo tập tin Gõ vào dòng lệnh sau đây: #include #include void { main() int i, j; char str_arr[5][20], str[20]; clrscr(); for(i = 0; i < 5; i++) { printf("\nEnter string %d: ", i + 1); scanf("%s", str_arr[i]); } for(i = 0; i < 4; i++) for(j = i + 1; j < 5; j++) { if(strlen(str_arr[i]) < strlen(str_arr[j])) { strcpy(str, str_arr[i]); strcpy(str_arr[i], str_arr[j]); strcpy(str_arr[j], str); } } printf("\nThe strings in descending order of length are:"); for(i = 0; i < 5; i++) printf("\n%s", str_arr[i]); 252 Elementary Programming with C } getch(); Để xem kết quả, thực bước sau đây: Lưu tập tin với tên stringI.C Biên dịch tập tin, stringI.C Thực thi chương trình, stringI.C Trở chương trình soạn thảo Kết chương trình minh họa sau: Enter string 1: This Enter string 2: sentence Enter string 3: is Enter string 4: not Enter string 5: sorted The strings in descending order of length are: sentence sorted This not is 18.1.2 Sử dụng hàm để chuyển mảng ký tự kiểu chữ hoa Các chuỗi truyền vào hàm để thao tác Khi chuỗi hay mảng ký tự, truyền vào hàm, thực ta truyền địa Để minh họa điều này, viết chương trình C để chuyển chuỗi kiểu chữ hoa Việc chuyển đổi kiểu chữ hoa thực hàm Các bước liệt kê sau: Đưa vào thư viện cần thiết Câu lệnh là: #include #include Khai báo mảng để lưu trữ chuỗi Câu lệnh là: char names[5][20]; Khai báo hàm nhận vào chuỗi đối số Câu lệnh là: void uppername(char name_arr[]); Nhập chuỗi đưa vào mảng Câu lệnh là: for(i = 0; i < 5; i++) { printf("\nEnter string %d: ", i + 1); scanf("%s", names[i]); } Chuỗi 253 Truyền chuỗi vào hàm để chuyển thành in hoa Sau chuyển đổi, hiển thị chuỗi thay đổi Câu lệnh là: for(i = 0; i < 5; i++) { uppername(names[i]); printf("\nNew string %d: %s", i + 1, names[i]); } Định nghĩa hàm Câu lệnh là: void uppername(char name_arr[]) { int x; } for(x = 0; name_arr[x] != '\0'; x++) { if(name_arr[x] >= 97 && name_arr[x] = 97 && name_arr[x]