intTypePromotion=1
ADSENSE

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

Chia sẻ: Năm Tháng Tĩnh Lặng | Ngày: | Loại File: PPTX | Số trang:35

59
lượt xem
9
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

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

  1. Chương 4. Xử lý chuỗi ký tự TRẦN MINH THÁI Email: minhthai@itc.edu.vn Website: www.minhthai.edu.vn  Cập nhật: 08 tháng 04 năm 2015
  2. Nội dung #2 • Khái niệm • Khai báo • Các hàm xử lý chuỗi • Bài tập
  3. 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 da ̣ ̃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
  4. Khái niệm #4 • Chuỗi  ký  tự  được  kết  thúc  bằng  ký  tự  ‘\0’  (giá  trị  0).  Do  đó  khi  khai  báo  đô ̣ dài  cua  ̉ 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 ‘N’ ‘G’ ‘U’ ‘Y’ ‘E’ ‘N’ ‘ ‘ ‘V’ ‘A’ ‘N’ ‘ ‘ ‘A’ ‘\0’ 0 1 2 3 4 5 6 7 8 9 10 11 12  Chuỗi gồm 13 ký tự 4
  5. Khai báo chuỗi #5 • Cá ch 1: Con tro hă ̉ ̀ ng char   [] ; Ví  dụ: char str[25];  Ý nghĩa khai báo  1 mang kiêu ky ̉ ̉ ́  tự tên là  str có  25 phần tử (như vây co ̣ ̉ ưu tối đa 24 ký tự vì  ́ thê l phầ n tử thứ  25 đã  chứ a ký tự kết thúc chuỗi  ‘\0’ ) 
  6. Khái niệm #6 • Cá ch 2: Con trỏ char  *; Ví du:̣ 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 
  7. Nhập chuỗi #7 • Cú pháp:  char *gets(char *str); ̣ Nhân ca ́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);
  8. 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” Thì kết quả xuất ra màn hình là: “Nguyen”  void main() (do str chỉ lưu chuỗi “Nguyen”) { char str[80]; printf("Nhap vao chuoi: "); scanf(“%s”, &str); printf("Chuoi vua nhap la: %s\n", str); }
  9. 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”
  10. 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
  11. Tính độ dài của chuỗi #11 int strlen(char s[]);  • Ví dụ: char *str = "Borland International"; printf("Do dai str = %d\n", strlen(str)); ̉ Do dai str = 21  Kế t qua: 
  12. 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?
  13. 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
  14. 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); ̉ abcdefghi  Kế t qua:  14
  15. 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 
  16. 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
  17. 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
  18. 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
  19. Nối chuỗi #19 • 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); • Ví dụ: char *s1 = “Khoa”; char *s2 = "CNTT"; strcat(s1, “ “); strncat(s1, s2, 2); printf("%s", s1);  Kết quả: Khoa CN
  20. So sánh chuỗi #20 • So sánh 2 chuỗi s1 và s2 theo nguyên tắc thứ tự từ điển. Phân biệt chữ hoa và thường int strcmp(char s1[],char s2[]); • Trả về: • 0: nếu s1 bằng s2 • >0: nếu s1 lớn hơn s2 •
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2