Các bước trong bài này được giải thích chi tiết, đầy đủ. Mục đích là nắm được những nội dung trong bài lý thuyết và sử dụng thành thạo được công cụ. Hãy làm theo các bước dưới đây một cách cẩn thận.
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 Các bước cho giải thích cặn kẽ, dễ hiểu tư cẩn thận từ đầu đến cuối Bài viết để đáp ứng mục tiêu học để hiểu hồn tồn cơng cụ Xin thực 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ẩnfile string.h Do chương trình có sử dụng đến hàm xử lí chuỗi phải đưa file thư viện vào lệnh include Các hàm chuỗi C tìm thấy tập tin header chuẩn string.h Tập tin phải bao gồm (include) chương trình sử dụng hàm chuỗi 18.1.1 Sắp xếp chuỗi sử dụng hàm thư viện Lưu 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 từ thư viện, cần phải bao gồmđưa vào hai tập tin headerhai 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]); } Chuỗi 251 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 Đổi chỗ chiều dài chuỗicủa nhỏ chuỗi Câu lệnh là: 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); } } Chuỗi str sử dụng thao tác hoán đổi hai chuỗi Một mảng str sử dụng để giúp đỡ cho thao tác đổi chỗ 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 nhìn vàoxem 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]); 252 Elementary Programming with C } 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]); 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: Một ví dụ thực thi chương trình 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ự dạngkiểu in 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 tập hợp chuỗi dạngkiểu in chữ hoa Việc chuyển đổi dạngkiểu in chữ hoa thực hàm Các bước liệt kê sau: Bao gồmĐưa vào tập tin header 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à: Chuỗi 253 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]); } 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]