1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Lập trình C nâng cao‎: Chương 4 - Trần Minh Thái

35 8 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 35
Dung lượng 174,6 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 chương này, người học sẽ tìm hiểu về xử lý chuỗi ký tự trong lập trình C thông qua những nội dung sau đây: Khái niệm về chuỗi ký tự, khai báo chuỗi ký tự, các hàm xử lý chuỗi,... Mời các bạn cùng tham khảo để nắm bắt các nội dung chi tiết.

Trang 4

Khái niệm

Chuỗi ký tự được kết thúc bằng ký tự ‘\0’ (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ự ‘\0’

Ví dụ: Chuỗi “NGUYEN VAN A” được lưu

 Chuỗi gồm 13 ký tự

4

‘N’ ‘G’ ‘U’ ‘Y’ ‘E’ ‘N’ ‘ ‘ ‘V’ ‘A’ ‘N’ ‘ ‘ ‘A’ ‘\0’

Trang 5

Khai báo chuỗi

Cách 1: Con trỏ hằng

char < Tên chuỗi > [< Số ký tự tối đa>] ;

Ví du: 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 ‘\0’ )

Trang 6

Khái niệm

Cách 2: Con trỏ

char *< Tên chuỗi >;

Trang 7

Nhập chuỗi

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

Trang 10

Các hàm xử lý chuỗi - <string.h>

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

Trang 12

Bài tập ví dụ - tính độ dài chuỗi

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?

Trang 13

Bài tập làm thêm – tính độ dài chuỗi

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

Trang 14

Sao chép chuỗi

Sao chép nội dung chuỗi scr vào chuỗi dest

strcpy(char dest[], char scr[]);

Trang 15

Sao chép chuỗi

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]=‘\0’; //hoặc dest[n]=0;

Trang 16

Bài tập ví dụ - sao chép chuỗi

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

Trang 17

Bài tập làm thêm – sao chép chuỗi

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

Trang 19

Nối chuỗi

Nối n ký tự đầu tiên của chuỗi s2 vào chuỗi s1

strncat(char s1[], char s2[], int n);

Trang 21

!!! Ký tự HOA < Ký tự thường

VD: ‘A’ < ‘a’ (do mã Ascii ‘A’ = 65, mã Ascii ‘a’ = 97)

Trang 22

printf(“Khac nhau”);

 Kết quả: Khac nhau

Trang 25

So sánh chuỗi

So sánh n ký tự đầu tiên của s1 và s2, không phân biệt hoa thường, giá trị trả về tương tự hàm strcmp()int strnicmp(char s1[],char s2[], int n);

Trang 26

NULL: nếu không có

Địa chỉ c: nếu tìm thấy

Trang 27

printf("Khong tim thay");

 Kết quả: Ky tu m xuat hien tai: 8

Trang 28

NULL: nếu không có

Ngược lại: Địa chỉ bắt đầu chuỗi s2 trong s1

Trang 30

Tách chuỗi

Tách chuỗi:

char *strtok(char s1[], char s2[]);

 Nếu s2 có xuất hiện trong s1: Tách chuỗi s1 thành hai chuỗi: Chuỗi đầu là những ký tự cho đến khi gặp chuỗi s2 đầu tiên, chuỗi sau là những ký tự còn lại của s1 sau khi đã bỏ đi chuỗi s2 xuất hiện trong s1

 Nếu s2 không xuất hiện trong s1 thì kết quả chuỗi tách vẫn là s1

Trang 32

Đổi sang chữ in HOA

Đổi chuỗi str thành chuỗi in HOA

Trang 33

Đổi sang chữ in thường

Đổi chuỗi str thành chuỗi in thường

Trang 34

Đếm số từ có trong chuỗi (từ cách nhau bởi khoảng trắng)

Viết hàm kiểm tra xem chuỗi có tuần hoàn hay không?

Viết hàm đảo vị trí của từ đầu và từ cuối

Trang 35

Q&A

Ngày đăng: 08/05/2021, 12:20

🧩 Sản phẩm bạn có thể quan tâm