Bài giảng Xử lý chuỗi ký tự
Số trang: 35
Loại file: pdf
Dung lượng: 1.05 MB
Lượt xem: 30
Lượt tải: 0
Xem trước 4 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Chuỗi ký ́ tự là trường hợp đặc biệt của mảng 1 chiều, là một dãy các phần tử, mỗi phần tử có kiểu ký tự. Trong bài giảng này chúng ta tìm hiểu một số kiến thức cơ bản của chuỗi kỹ tự như: Khái niệm, khai báo chuỗi kỹ tự, các hàm xử lý chuỗi, một số bài tập. Mời tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Xử lý chuỗi ký tựXỬ LÝ CHUỖI KÝ TỰ Nội dung#2 Khái niệm Khai báo Các hàm xử lý chuỗi Bài tập Khái niệm#3 • Chuỗi ký tự là trường hợp đặc biệt của mảng 1 chiều, là một dãy các phần tử, mỗi phần tử có kiểu ký tự • Hằng ký tự được đặt trong cặp nháy đơn. Ví dụ: ‘a’, ‘1’, ‘ ’ • Hằng chuỗi được đặt trong cặp nháy kép. Ví dụ: “ho va ten”, “123”, “” 3 Khái niệm#4 • Chuỗi ký tự được kết thúc bằng ký tự ‘ ’ (giá trị 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ự ‘ ’. • Ví dụ: Chuỗi “NGUYEN VAN A” được lưu ‘N’ ‘G’ ‘U’ ‘Y’ ‘E’ ‘N’ ‘ ‘ ‘V’ ‘A’ ‘N’ ‘ ‘ ‘A’ ‘ ’ 0 1 2 3 4 5 6 7 8 9 10 11 12 Chuỗi gồm 13 ký tự 4 Khai báo chuỗi#5 • Cách 1: Con trỏ hằng char < Tên chuỗi > [< Số ký tự tối đa>] ; Ví dụ: char str[25]; Ý nghĩa khai báo 1 mảng kiểu ký tự tên là str có 25 phần tử (như vậy có thể lưu tối đa 24 ký tự vì phần tử thứ 25 đã chứa ký tự kết thúc chuỗi ‘ ’ ) Khái niệm#6 • Cách 2: Con trỏ char *< Tên chuỗi >; Ví dụ: char *str; • Phải cấp phát bộ nhớ trước khi sử dụng chuỗi str • Ví dụ: char *str; str = (char*)malloc(30); //Cấp phát bộ nhớ cho str gồm 30 ký tự Nhập chuỗi#7 • Cú pháp: char *gets(char *str); Nhận các ký tự nhập từ phím cho đến khi nhấn phím Enter và đưa vào chuỗi str Ví dụ: void main() { char str[80]; printf(Nhap vao chuoi: ); gets(str); printf(Chuoi vua nhap la: %s , str); } Nhập chuỗi#8 • Lưu ý: Không thể dùng hàm scanf để nhập chuỗi có khoảng trắng • Ví dụ: Giả sử nhập vào chuỗi: “Nguyen Van An” void main() Thì kết quả xuất ra màn hình là: “Nguyen” (do str chỉ lưu chuỗi “Nguyen”) { char str[80]; printf(Nhap vao chuoi: ); scanf(“%s”, &str); printf(Chuoi vua nhap la: %s , str); } Xuất chuỗi#9 Cú pháp : int puts (const char *s); Ví dụ: void main() { char *str = Vi du xuat chuoi; puts(str); } Có thể dùng printf() với định dạng “%s” Các hàm xử lý chuỗi - #10 1. Tính độ dài chuỗi: strlen 2. Sao chép chuỗi: strcpy, strncpy 3. Nối chuỗi: strcat, strncat 4. So sánh chuỗi: strcmp, strncmp, stricmp, strnicmp 5. Tìm kiếm: strchr, strstr 6. Tách chuỗi: strtok 7. Đổi thành chữ in HOA: strupr 8. Đổi thành chữ in thường: strlwr Tính độ dài của chuỗi#11 int strlen(char s[]); • Ví dụ: char *str = Borland International; printf(Do dai str = %d , strlen(str)); Kết quả: Do dai str = 21 Bài tập ví dụ - tính độ dài chuỗi#12 Viết hàm đếm số ký tự trắng trong chuỗi Viết hàm in ra màn hình chuỗi theo thứ tự đảo ngược Viết hàm tìm xem ký tự ch có trong chuỗi không? Nếu có cho biết vị trí xuất hiện đầu tiên của ch Viết hàm kiểm tra xem chuỗi có đối xứng hay không? Bài tập làm thêm – tính độ dài chuỗi#13 Viết hàm tra xem trong chuỗi có ký tự số hay không nếu có tách ra thành một mảng số riêng Viết chương trình tìm kiếm xem ký tự nào xuất hiện nhiều nhất trong chuỗi Sao chép chuỗi#14 • Sao chép nội dung chuỗi scr vào chuỗi dest strcpy(char dest[], char scr[]); • Ví dụ: char dest[10]; char *src = abcdefghi; strcpy(dest, src); printf(%s, dest); Kết quả: abcdefghi 14 Sao chép chuỗi#15 • Chép n ký tự từ chuỗi scr sang chuỗi dest. Nếu chiều dài scr < n thì hàm sẽ điền khoảng trắng cho đủ n ký tự vào đích strncpy(char dest[], char scr[], int n); dest[n]=‘ ’; //hoặc dest[n]=0; • Ví dụ: char dest[4]; char *src = abcdefghi; strncpy(dest, src, 3); dest[3]=0; printf(%s , dest); Kết quả: abc 15 Bài tập ví dụ - sao chép chuỗi#16 Viết hàm đổi tất cả các ký tự có trong chuỗi thành chữ HOA (không dùng hàm strupr) Viết chương trình đảo ngược các ký tự trong chuỗi Ví dụ: Nhập: ABCDE Chuỗi sau khi đảo ngược là: EDCBA Bài tập làm thêm – sao chép chuỗi#17 Viết hàm đổi tất cả các ký tự có trong chuỗi thành chữ thường (không dùng hàm strlwr) Viết hàm đổi những ký tự đầu tiên của mỗi từ thành chữ in HOA Nối chuỗi#18 Nối chuỗi s2 vào chuỗi s1 strcat(char s1[],char s2[]); Ví dụ: char *s1 = “Khoa”; char *s2 = CNTT; strcat(s1, “ “); strcat(s1, s2); printf(%s, s1); Kết quả: Khoa CNTT Nối chuỗi#19 Nối n ký tự ...
Nội dung trích xuất từ tài liệu:
Bài giảng Xử lý chuỗi ký tựXỬ LÝ CHUỖI KÝ TỰ Nội dung#2 Khái niệm Khai báo Các hàm xử lý chuỗi Bài tập Khái niệm#3 • Chuỗi ký tự là trường hợp đặc biệt của mảng 1 chiều, là một dãy các phần tử, mỗi phần tử có kiểu ký tự • Hằng ký tự được đặt trong cặp nháy đơn. Ví dụ: ‘a’, ‘1’, ‘ ’ • Hằng chuỗi được đặt trong cặp nháy kép. Ví dụ: “ho va ten”, “123”, “” 3 Khái niệm#4 • Chuỗi ký tự được kết thúc bằng ký tự ‘ ’ (giá trị 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ự ‘ ’. • Ví dụ: Chuỗi “NGUYEN VAN A” được lưu ‘N’ ‘G’ ‘U’ ‘Y’ ‘E’ ‘N’ ‘ ‘ ‘V’ ‘A’ ‘N’ ‘ ‘ ‘A’ ‘ ’ 0 1 2 3 4 5 6 7 8 9 10 11 12 Chuỗi gồm 13 ký tự 4 Khai báo chuỗi#5 • Cách 1: Con trỏ hằng char < Tên chuỗi > [< Số ký tự tối đa>] ; Ví dụ: char str[25]; Ý nghĩa khai báo 1 mảng kiểu ký tự tên là str có 25 phần tử (như vậy có thể lưu tối đa 24 ký tự vì phần tử thứ 25 đã chứa ký tự kết thúc chuỗi ‘ ’ ) Khái niệm#6 • Cách 2: Con trỏ char *< Tên chuỗi >; Ví dụ: char *str; • Phải cấp phát bộ nhớ trước khi sử dụng chuỗi str • Ví dụ: char *str; str = (char*)malloc(30); //Cấp phát bộ nhớ cho str gồm 30 ký tự Nhập chuỗi#7 • Cú pháp: char *gets(char *str); Nhận các ký tự nhập từ phím cho đến khi nhấn phím Enter và đưa vào chuỗi str Ví dụ: void main() { char str[80]; printf(Nhap vao chuoi: ); gets(str); printf(Chuoi vua nhap la: %s , str); } Nhập chuỗi#8 • Lưu ý: Không thể dùng hàm scanf để nhập chuỗi có khoảng trắng • Ví dụ: Giả sử nhập vào chuỗi: “Nguyen Van An” void main() Thì kết quả xuất ra màn hình là: “Nguyen” (do str chỉ lưu chuỗi “Nguyen”) { char str[80]; printf(Nhap vao chuoi: ); scanf(“%s”, &str); printf(Chuoi vua nhap la: %s , str); } Xuất chuỗi#9 Cú pháp : int puts (const char *s); Ví dụ: void main() { char *str = Vi du xuat chuoi; puts(str); } Có thể dùng printf() với định dạng “%s” Các hàm xử lý chuỗi - #10 1. Tính độ dài chuỗi: strlen 2. Sao chép chuỗi: strcpy, strncpy 3. Nối chuỗi: strcat, strncat 4. So sánh chuỗi: strcmp, strncmp, stricmp, strnicmp 5. Tìm kiếm: strchr, strstr 6. Tách chuỗi: strtok 7. Đổi thành chữ in HOA: strupr 8. Đổi thành chữ in thường: strlwr Tính độ dài của chuỗi#11 int strlen(char s[]); • Ví dụ: char *str = Borland International; printf(Do dai str = %d , strlen(str)); Kết quả: Do dai str = 21 Bài tập ví dụ - tính độ dài chuỗi#12 Viết hàm đếm số ký tự trắng trong chuỗi Viết hàm in ra màn hình chuỗi theo thứ tự đảo ngược Viết hàm tìm xem ký tự ch có trong chuỗi không? Nếu có cho biết vị trí xuất hiện đầu tiên của ch Viết hàm kiểm tra xem chuỗi có đối xứng hay không? Bài tập làm thêm – tính độ dài chuỗi#13 Viết hàm tra xem trong chuỗi có ký tự số hay không nếu có tách ra thành một mảng số riêng Viết chương trình tìm kiếm xem ký tự nào xuất hiện nhiều nhất trong chuỗi Sao chép chuỗi#14 • Sao chép nội dung chuỗi scr vào chuỗi dest strcpy(char dest[], char scr[]); • Ví dụ: char dest[10]; char *src = abcdefghi; strcpy(dest, src); printf(%s, dest); Kết quả: abcdefghi 14 Sao chép chuỗi#15 • Chép n ký tự từ chuỗi scr sang chuỗi dest. Nếu chiều dài scr < n thì hàm sẽ điền khoảng trắng cho đủ n ký tự vào đích strncpy(char dest[], char scr[], int n); dest[n]=‘ ’; //hoặc dest[n]=0; • Ví dụ: char dest[4]; char *src = abcdefghi; strncpy(dest, src, 3); dest[3]=0; printf(%s , dest); Kết quả: abc 15 Bài tập ví dụ - sao chép chuỗi#16 Viết hàm đổi tất cả các ký tự có trong chuỗi thành chữ HOA (không dùng hàm strupr) Viết chương trình đảo ngược các ký tự trong chuỗi Ví dụ: Nhập: ABCDE Chuỗi sau khi đảo ngược là: EDCBA Bài tập làm thêm – sao chép chuỗi#17 Viết hàm đổi tất cả các ký tự có trong chuỗi thành chữ thường (không dùng hàm strlwr) Viết hàm đổi những ký tự đầu tiên của mỗi từ thành chữ in HOA Nối chuỗi#18 Nối chuỗi s2 vào chuỗi s1 strcat(char s1[],char s2[]); Ví dụ: char *s1 = “Khoa”; char *s2 = CNTT; strcat(s1, “ “); strcat(s1, s2); printf(%s, s1); Kết quả: Khoa CNTT Nối chuỗi#19 Nối n ký tự ...
Tìm kiếm theo từ khóa liên quan:
Chuỗi ký tự Xử lý chuỗi ký tự khai báo chuỗi kỹ tự Hàm xử lý chuỗi Bài giảng Xử lý chuỗi ký tự Kiểu ký tựTài liệu có liên quan:
-
114 trang 264 2 0
-
Giáo trình Ngôn ngữ lập trình 2
50 trang 114 0 0 -
Bài thuyết trình Cách khai báo biến, xử lý chuỗi và mảng trong PHP
30 trang 36 0 0 -
Lập trình trong excel với visual basic
92 trang 35 0 0 -
Bài giảng Chương 1: Một số hàm thông dụng
58 trang 32 0 0 -
Bài giảng Tin học đại cương: Chương 3 - Nguyễn Vũ Duy
57 trang 32 0 0 -
97 trang 31 0 0
-
Giáo trình Visual Basic 6.0 - Trường ĐH Sư phạm Kỹ thuật
172 trang 31 0 0 -
196 trang 30 0 0
-
Bài giảng Microsoft SQL server: Chương 3 - Phạm Mạnh Cương
43 trang 30 0 0