intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Kỹ thuật lập trình - Chương 7: Chuỗi ký tự

Chia sẻ: Hấp Hấp | Ngày: | Loại File: PPT | Số trang:40

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

Bài giảng "Kỹ thuật lập trình - Chương 7: Chuỗi ký tự" cung cấp cho người học các kiến thức: Giới thiệu Chuỗi, khai báo và khởi tạo chuỗi, nhập chuỗi, xuất chuỗi, một số hàm thư viện thao tác trên chuỗi, một số ví dụ về chuỗi,... Mời các bạn cùng tham khảo nội dung chi tiết.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Kỹ thuật lập trình - Chương 7: Chuỗi ký tự

  1. Chương 7 CHUỖI KÝ TỰ 
  2. Nội dung 1. Giới thiệu Chuỗi 2. Khai báo và khởi tạo chuỗi 3. Nhập chuỗi 4. Xuất chuỗi  5. Một số hàm thư viện thao tác trên chuỗi. 6. Một số ví dụ về chuỗi 7. Mảng các chuỗi  8. Mảng con trỏ đến các chuỗi
  3. Giới thiệu chuỗi  Một chuỗi ký tự (chuỗi) là mảng một chiều các ký tự được  kết thúc bởi ký tự NULL (\0).   Số lượng các ký tự khác NULL trong chuỗi gọi là chiều dài  của chuỗi.   Ghi  chú:  Như  mảng  1  chiều,  tên  chuỗi  ký  tự  cũng  được  xem là một hằng địa chỉ biểu thị  địa chỉ của phần tử  đầu  tiên. 
  4. Khai báo và khởi tạo chuỗi  Khai báo char [độ dài] ; // không khởi tạo char [độ dài] = chuỗi ký tự ; // có khởi tạo char [] = chuỗi ký tự ; // có khởi tạo  Độ dài mảng là số kí tự tối đa có thể có trong chuỗi tính từ  đầu  mảng  đến  dấu  kết  thúc  chuỗi  (không  kể  dấu  kết  thúc  chuỗi ‘\0’).  Độ dài tối đa của chuỗi = độ dài mảng ­ 1.   Ví dụ:  char hoten[26] ; // chuỗi họ tên chứa tối đa 25 kí tự  char monhoc[31] = "NNLT C++" ;  char thang[] = "Mười hai" ; // độ dài mảng = 9  char *str = “Hello”; //Dùng con trỏ
  5. Cách sử dụng chuỗi ký tự  Truy cập một kí tự trong chuỗi: cú pháp giống như mảng.    char s[50] = "I\'m a student" ; // chú ý kí tự ' phải được viết là \' cout > s ; cout 
  6. Nhập chuỗi ký tự Phương thức nhập chuỗi (#include )  Dùng hàm cin.getline(s,n) để nhập chuỗi kí tự. Hàm có 2 đối số  với s là chuỗi cần nhập nội dung và n­1 là số kí tự tối đa của  chuỗi.   Ví dụ 1 : Xét đoạn lệnh sau char s[10] ; cin.getline(s, 10) ; cout 
  7. Nhập chuỗi ký tự Phương thức nhập chuỗi (#include )  Dùng hàm gets() của thư viện stdio.h.   Hàm này có cú pháp sau: char *gets(char *s);  Hàm  gets()  đọc  các  ký  tự  từ  bàn  phím  (stdio.h)  vào  trong  mảng trỏ đến bởi s cho đến khi nhấn Enter. Ký tự null sẽ  được  đặt  sau  ký  tự  cuối  cùng  của  chuỗi  nhập  vào  trong  mảng.  Hoặc  ta  có  thể  dùng  cin  (Console  INput).  Cú  pháp  như  s  sau: cin >> s  Ví dụ 1 : Xét đoạn lệnh sau char s[10] ; gets(s) ;
  8. Nhập chuỗi ký tự  Ví dụ  2 : Nhập một ngày tháng dạng Mỹ (mm/dd/yy), đổi sang  ngày tháng dạng Việt Nam rồi in ra màn hình. #include  main() {        char US[9], VN[9]; // khởi tạo trước hai dấu /    cin.getline(US, 9) ; // nhập ngày tháng, ví dụ "05/01/99“    gets(US);      VN[0] = US[3]; VN[1] = US[4] ; // ngày    VN[3] = US[0]; VN[4] = US[1] ; // tháng      VN[6] = US[6]; VN[7] = US[7] ; // năm      cout 
  9. Xuất chuỗi ký tự  Dùng hàm puts() của thư viện stdio.h.  Hàm này có cú pháp sau: int puts(const char *s);  Hoặc ta có thể dùng cout (Console OUTput). Cú pháp như  sau: cout 
  10. Xuất chuỗi ký tự  Ví  dụ:  Nhập  một  ngày  tháng  dạng  Mỹ  (mm/dd/yy),  đổi  sang  ngày tháng dạng Việt Nam rồi in ra màn hình. #include  main() {        char US[9], VN[9] = " / / " ; // khởi tạo trước hai dấu /    cin.getline(US, 9) ; // nhập ngày tháng, ví dụ "05/01/99“    gets(US);      VN[0] = US[3]; VN[1] = US[4] ; // ngày    VN[3] = US[0]; VN[4] = US[1] ; // tháng      VN[6] = US[6]; VN[7] = US[7] ; // năm      cout 
  11. Xuất chuỗi ký tự  Ví  dụ:  Nhập  một  ngày  tháng  dạng  Mỹ  (mm/dd/yy),  đổi  sang  ngày tháng dạng Việt Nam rồi in ra màn hình. #include  main() {        char US[9], VN[9] = " / / " ; // khởi tạo trước hai dấu /    cin.getline(US, 9) ; // nhập ngày tháng, ví dụ "05/01/99“    gets(US);      VN[0] = US[3]; VN[1] = US[4] ; // ngày    VN[3] = US[0]; VN[4] = US[1] ; // tháng      VN[6] = US[6]; VN[7] = US[7] ; // năm      cout 
  12. Hàm và chuỗi ký tự  Hàm không thể trả về một giá trị là chuỗi ký tự.   Đối của hàm có thể là tên chuỗi ký tự, khi đó tham số thực phải  là tên chuỗi ký tự  Đối Tham số thực Chuỗi ký tự Tên chuỗi ký tự  Ví dụ: Viết hàm trả về chiều dài xâu ký tự   Input s   Output l(s)  int ChieuDai(char s[MAX])  {    int l = 0;  while (s[l] != NULL)       l++;  return l;  } 
  13. Hàm và chuỗi ký tự  Ví dụ 16 : Viết hàm đảo ngược xâu ký tự s, kết quả lưu trữ lại vào  s.   Input s   Output s  void DaoNguoc(char s[MAX])  {    int i, j, h;  char Tam;  h = ChieuDai(s);  for(i = 0, j = h­1; i 
  14. Hàm và chuỗi ký tự Sử dụng hàm trên bằng chương trình sau :  #include   #include   #include   #define MAX 80  void DaoNguoc(char s[MAX]) ;  void ChieuDai(char s[MAX]) ;  int main()  {       char s[MAX];  clrscr();  cout
  15. Con trỏ và chuỗi ký tự  Chuỗi ( string ) là một dãy các kí tự liên tiếp trong bộ nhớ được kết thúc  bằng kí tự NUL (‘\0’). Như vậy để sử dụng biến chuỗi chứa MAX kí tự,  ta khai báo như sau: char s[MAX+1];  Ta cũng có thể khai báo biến chuỗi như sau: char* s;  Có thể khởi tạo biến chuỗi như sau: char s[ ] = “Hello C++”;
  16. Con trỏ và chuỗi ký tự  Hàm nhập chuỗi của đối tượng cin:  // đọc các kí tự tự cin vào s, kể cả kí tự khoảng trắng.  getline( char* s, int size, char delim=’\n’ );  read( char* s, int size ); // cin.read( s, 5 );  // cho phép đọc từng kí tự từ cin vào trong ch và trả về trị 1. Hàm trả về trị 0  nếu gặp kí tự ‘\n’.  get( char ch );  Hàm xuất chuỗi của đối tượng cout:  put( char ); // cout.put( ch ).put( ch );  write( const char* s, int size ); // cout.write( s, 1 ).write( s+1, 2);
  17. Con trỏ và chuỗi ký tự  Một số hàm thông dụng khai báo trong  cho phép thao tác, xữ lý  chuỗi tí tự:  size_t strlen( const char* s );  int strcmp( const char* s1, const char* s2 );  int strcmpi( const char* s1, const char* s2 );  char* strcpy( char* dest, const char* src );  char* strcat( char* dest, const char* src );
  18. Các hàm thư viện xử lý chuỗi ký tự Một số hàm xử lí chuỗi (#include ) 1.  strcpy(s, t) :  Hàm sẽ sao chép toàn bộ nội dung của chuỗi t (kể cả kí tự kết  thúc chuỗi) vào cho chuỗi s.   Để  sử  dụng  hàm  này  cần  đảm  bảo  độ  dài  của  mảng  s  ít  nhất  cũng bằng độ dài của mảng t.  Ví dụ: char s[10], t[10] ; t = "Face" ; // không được dùng s = t ; // không được dùng strcpy(t, "Face") ; // được, gán "Face" cho t strcpy(s, t) ; // được, sao chép t sang s cout 
  19. Các hàm thư viện xử lý chuỗi ký tự 2. strncpy(s, t, n) :  Sao chép n kí tự của t vào s. Hàm này chỉ làm nhiệm vụ sao chép,  không tự động gắn kí tự kết thúc chuỗi cho s. Do vậy người sử  dụng phải thêm câu lệnh  đặt kí tự '\0' vào cuối chuỗi s sau khi  sao chép xong.  Ví dụ: char s[10], t[10] = "Steven"; strncpy(s, t, 5) ; // copy 5 kí tự "Steve" vào s s[5] = '\0' ; // đặt dấu kết thúc chuỗi // in câu: Steve is young brother of Steven cout 
  20. Các hàm thư viện xử lý chuỗi ký tự 3. strcat(s, t);  Nối một bản sao của t vào sau s. Hàm sẽ loại bỏ kí tự kết thúc  chuỗi s trước khi nối thêm t. Việc nối sẽ đảm bảo lấy cả kí tự  kết thúc của chuỗi t vào cho s (nếu s đủ chỗ) vì vậy NSD không  cần thêm kí tự này vào cuối chuỗi.   Hàm  không  kiểm  tra  xem  liệu  độ  dài  của  s  có  đủ  chỗ  để  nối  thêm nội dung, việc kiểm tra này phải do NSD đảm nhiệm.   Ví dụ:     char a[100] = "Mẫn", b[4] = "tôi";         strcat(a, “ và ”);         strcat(a, b);         cout 
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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