LTC- Xâu kí tự

26 868 6
LTC- Xâu kí tự

Đ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

LTC- Xâu kí tự

Biên soạn: TS Ngô Hữu PhúcBiên soạn: TS Ngô Hữu PhúcBộ môn Khoa học máy tínhBộ môn Khoa học máy tínhHọc viện Kỹ thuật quân sựHọc viện Kỹ thuật quân sựXâu ký tựXâu ký tự1Chương 8: Xâu ký tựCHƯƠNG 8CHƯƠNG 8 Nội dung bài họcNội dung bài họcChương 8: Xâu ký tự21. Các loại biến, hằng xâu ký tự.2. Các hàm cơ bản trong xâu ký tự.3. Một số ví dụ minh họa. 8.1. Các biến và hằng kiểu xâu tự.8.1. Các biến và hằng kiểu xâu tự.Chương 8: Xâu ký tự3Trong C, xâutự được cài đặt như là mảng của các ký tự, được kết thúc bởi ký tự NULL (‘\0’).Các biến xâu tự được sử dụng để lưu trữ một dãy các ký tự. Như các biến khác, các biến này phải được khai báo trước khi sử dụng. Ví dụ khai báo một biến xâu tự:char str[10]; str là một mảng các ký tự, nó có thể lưu tối đa 10 ký tự. Giả sử str được gán một hằng xâu tự: “WELL DONE”Một hằng xâu tự là một dãy các ký tự nằm trong dấu nháy kép. Mỗi ký tự trong một xâu tự được lưu trữ như là một phần tử của mảng. 8.1. Các biến và hằng kiểu xâu tự (t)8.1. Các biến và hằng kiểu xâu tự (t)Chương 8: Xâu ký tự4Trong bộ nhớ, xâu tự được lưu trữ như sau:Đối với kiểu hằng hoặc thông qua lệnh nhập, ký tự ‘\0’ (null) được tự động thêm vào trong cách biểu diễn bên trong của xâu tự để đánh dấu điểm kết thúc xâu tự. Do đó, khi khai báo một xâu tự, phải tăng kích thước của xâu thêm một phần tử để chứa hiệu kết thúc NULL.‘W’ ‘E’ ‘L’ ‘L’ ‘ ’ ‘D’ ‘O’ ‘N’ ‘E’ ‘\0’ 8.1.1. Con trỏ trỏ đến xâu tự8.1.1. Con trỏ trỏ đến xâu tựChương 8: Xâu ký tự5Xâu tự có thể được lưu và truy cập bằng cách sử dụng con trỏ kiểu ký tự. Một con trỏ kiểu ký tự trỏ đến một xâutự được khai báo như sau: char *pstr = “WELCOME”;hoặc:char a[] = “Welcome”;char *pa=a;pstr là một con trỏ được khởi tạo để trỏ đến một hằng xâu tự. Con trỏ pa lưu địa chỉ của xâu a.Các con trỏ trên có thể thay đổi để trỏ đến bất một xâu tự nào khác. 8.1.2 Các thao tác nhập xuất xâu tự8.1.2 Các thao tác nhập xuất xâu tựChương 8: Xâu ký tự6Các thao tác nhập/xuất xâu tự trong C được thực hiện bằng cách gọi các hàm chuẩn. Các hàm chuẩn được khai báo trong: #include <stdio.h>;Một số hàm chuẩn cho xâu ký tự:Hàm char * gets (char *s);Hàm int puts (const char *s);Hàm scanf() với định dạng xâu ký tự.Hàm printf() với định dạng xâu ký tự. 8.1.2 .1. Các thao tác nhập/xuất xâu tự đơn giản8.1.2 .1. Các thao tác nhập/xuất xâu tự đơn giảnChương 8: Xâu ký tự7Nhập đơn giản:Hàm được sử dụng gets().Cú pháp: char * gets (char *s);Ý nghĩa: Nhập một xâutự thông qua thiết bị nhập chuẩn. Các ký tự sẽ được nhập vào cho đến khi nhấn phím Enter. Hàm gets() thay thế ký tự kết thúc trở về đầu dòng ‘\n’ bằng ký tự ‘\0’. Trong đó s là một mảng ký tự đã được khai báo.Chú ý: Cần giải phóng bộ đệm khi nhập xâutự bằng hàm: fflush(stdin).Xuất đơn giản:Hàm được sử dụng: puts().Cú pháp: int puts (const char *s);Ý nghĩa: Hiển thị một xâu tự ra thiết bị xuất chuẩn. Trong đó s là một mảng ký tự đã được khai báo và khởi tạo. Ví dụ: Ví dụ: Nhập xâu Nhập xâu tự tự và hiển thị hiển thị lên màn lên màn hìnhhìnhChương 8: Xâu ký tự8#include "stdio.h"#include "conio.h"void main(){char name[20];puts("Nhap ten:");gets(name); puts("Xin chao: ");puts(name); getch();}Kết quả khi chạy chương trình:Nhap ten:Nguyen Van AXin chao:Nguyen Van A 8.1.2 .2. Các thao tác Nhập/Xuất xâu tự có định dạng8.1.2 .2. Các thao tác Nhập/Xuất xâu tự có định dạngChương 8: Xâu ký tự9Nhập có định dạng:Sử dụng hàm: scanf(…).Cú pháp: scanf(“%s”, str);Ý nghĩa: Sử dụng để nhập một xâu ký tự. Vì hàm này là hàm tổng hợp, khi nhập xâu ký tự, không nhập dấu cách.Định dạng %s cho biết rằng một giá trị xâutự sẽ được nhập vào, str là một mảng ký tự đã được khai báo. Xuất có định dạng:Sử dụng hàm: printf(…);Cú pháp: printf(“%s”,str);Ý nghĩa:Hiện một xâutự lên màn hình.Định dạng %s cho biết rằng một giá trị xâu tự sẽ được hiển thị str là một mảng ký tự đã được khai báo và khởi tạo. Ví dụ về Ví dụ về sử dụng sử dụng hàm hàm scanf scanf và printf và printf với xâu với xâu ký tựký tựChương 8: Xâu ký tự10#include "stdio.h"#include "conio.h"void main(){char name[20];printf("Nhap ten:");scanf("%s",name); printf("Xin chao: ");printf("%s",name);getch();}Kết quả:14. Trường hợp 1:Nhap ten: Nguyen Van AXin chao: Nguyen17. Trường hợp 2:Nhap ten: NguyenVanAXin chao: NguyenVanA [...]... Các hàm xử lý xâu tự  Trong C, hỗ trợ rất nhiều hàm về xâu tự  Các hàm này được định nghĩa trong thư viện string.h  Một số thao tác mà các hàm này thực hiện là:  Nối xâu tự  So sánh xâu tự  Định vị một ký tự trong xâu tự  Sao chép một xâu tự sang xâu tự khác  Xác định chiều dài của xâu tự  … 11 Chương 8: Xâutự 8.2.1 Hàm nối xâutự  Để nối 2 xâutự có thể dùng... Chương 8: Xâutự  Giải thích:  Xâu 1 nhỏ xâu 2, kết quả -1  Xâu 1 lớn hơn xâu 3, kết quả 1  Xâu 1 bằng xâu 4, kết quả 0 Ví dụ về sử dụng strcmp 8.2.3 Xác định vị trí ký tự  Để tìm ký tự đầu tiên xuất hiện trong xâutự có thể dùng hàm: strchr(…)  Cú pháp: char * strchr(const char *str, int chr);  Ý nghĩa:  Hàm strchr() xác định vị trí xuất hiện của một ký tự trong một xâu tự  Trong... char* s2, int n): so sánh n tự đầu tiên của 2 xâu  int strnicmp(char* s1, char* s2, int n): tương tự trên, không phân biệt hoa, thường  char* strncpy(char* s1, char* s2, int n): sao n tự đầu tiên của s2 sang s1  char* strnset(char* s, int c, int n): gán n lần tự c cho xâu s  char* strpbrk(char* s1, char* s2): trả về tự đầu tiên trong xâu s2 có xuất hiện trong xâu s1, nếu không trả về NULL... 8: Xâutự K t quả: ế a khong co trong H Chi M o inh a co trong H N a N a oi, oi 8.2.4 Copy xâutự  Khi làm việc với xâutự (mảng ký tự) , không sử dụng được phép gán để sao chép giá trị giữa 2 xâu  Để copy, có thể dùng hàm strcpy(…)  Cú pháp: char * strcpy(char *dest, const char *src);  Ý nghĩa:  Hàm sao chép giá trị scr vào dest và trả về xâu tự dest  dest và scr là hai mảng ký tự. .. *src);  Ý nghĩa:  2 xâu dest và src đã được khai báo và khởi tạo  Hàm này sẽ thực hiện nối xâu tự scr vào sau xâu tự dest  Hàm này cũng trả về con trỏ tới xâu đã nối 12 Chương 8: Xâutự #include "stdio.h" Giải thích: #include "conio.h" 1 Trường hợp 1: #include "string.h" Nhap ho: Nguyen void main() Nhap ten: Anh { NguyenAnh // xâu đích char ho[10]; char ten[10]; NguyenAnh // xâu kết quả 2 Trường... "); Nhap ten: Anh scanf("%s", ho); NguyenVanAnh // xâu đích printf("Nhap ten:"); NguyenVanAnh // xâu kết quả scanf("%s", ten); hoten=strcat(ho, ten); printf("%s\n", ho); printf("%s\n", hoten); getch(); } 13 Chương 8: Xâutự sau đó báo lỗi, vì xâu đích không đủ bộ nhớ để lưu Ví dụ về nối xâutự 8.2.2 Hàm so sánh xâutự  Để so sánh 2 xâu ký tự, có thể dùng hàm strcmp(…)  Cú pháp: int strcmp(const... hiện của một ký tự trong một xâu tự  Trong đó str là một mảng ký tự hay con trỏ tự  chr là một biến int chứa mã ASCII của ký tự cần tìm  Hàm trả về con trỏ trỏ đến giá trị tìm được đầu tiên trong xâu tự, hoặc NULL nếu không tìm thấy 16 Chương 8: Xâutự #include "stdio.h" Ví dụ: Chương trình sau đây xác định liệu ký tự ‘a’ có xuất hiện trong tên hai thành phố hay không? #include "conio.h"... char* strrev(char* s): đảo ngược chuỗi tự  char* strset(char* s, int kt): tạo xâu s toàn tự kt  char* strstr(char* s1, char* s2): trả về địa chỉ của xâu con trong s2 trùng với xâu s1, nếu không trả về NULL  char* strupr(char* s): chuyển chữ thường thành chữ hoa  char * strtok(char *s1, const char *s2); chia cắt xâu s1 theo dấu hiệu s2 24 Chương 8: Xâutự #include Kết quả: #include... Xâutự Ví dụ về hàm strcpy #include "stdio.h" #include "conio.h" #include "string.h" void main() { char hotelname1[15] = "Hoa Hong"; char hotelname2[15] = "Hoa Mai"; printf("Ten cu cua khach san: %s\n", hotelname1); strcpy(hotelname1, hotelname2); printf("Ten moi cua khach san: %s\n", hotelname1); getch(); } 19 Chương 8: Xâutự 8.2.5 Hàm xác định độ dài xâutự  Để xác định chiều dài của xâu. .. getch(); } 21 Chương 8: Xâutự Ví dụ sử dụng strlen 8.2.6 Một số hàm thường dùng khác trong thư viện string.h  char* strcat(char* s1, char* s2): ghép chuỗi s2 vào chuỗi s1  char* strchr(char* s, int ch): trả về địa chỉ của tự ch trong s (việc tìm được thực hiện từ trái sang phải), nếu không trả về NULL  char* strrchr(char* s, int ch): tương tự hàm trên, trả về địa chỉ của tự ch trong s (việc . là:Nối xâu kí tự. So sánh xâu kí tự. Định vị một ký tự trong xâu kí tự. Sao chép một xâu kí tự sang xâu kí tự khác.Xác định chiều dài của xâu kí tự. … 8.2.1.. trong xâu ký tự. 3. Một số ví dụ minh họa. 8.1. Các biến và hằng kiểu xâu kí tự. 8.1. Các biến và hằng kiểu xâu kí tự. Chương 8: Xâu ký tự3 Trong C, xâu ký tự

Ngày đăng: 05/11/2012, 14:54

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan