1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Chuỗi ký tự

4 383 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 4
Dung lượng 86 KB

Nội dung

VIII Chuỗi ký tự Khái niệm khai báo Dữ liệu kiểu chuỗi lưu trữ thông tin dạng văn Chúng ta định nghĩa chuỗi ký tự dãy gồm ký tự mảng ký tự kết thúc ký tự ‘\0’ Chuỗi ký tự xem kiểu liệu vừa có tính chất kiểu char vừa có tính chất kiểu mảng chiều Nhưng ngôn ngữ C không đưa thao tác mảng cho ccá chuỗi ký tự, gán ký tự cho mảng cộng hai chuỗi ký tự với phép toán thường sử dụng Tất điều thực thông qua biến trỏ hàm đặc biệt thư viện ngôn ngữ C Các chuỗi ký tự đặt dấu nháy kép “”  Khai báo biến chuỗi: Khai báo biến theo dạng mảng:  Cú pháp: char [chiều dài tối đa];  Ví dụ: char hoten[30]; //chiếm 30+1 bytes Nếu hoten chứa “Nguyen Van A” : N y u y e n V a 10 11 12 … 30 n A \0 … Chúng thử kiểm chứng qua chương trình sau: void main() { char str[20]; int i=0; printf(“nhap xau ky tu\n”); gets(str); while(str[i]!=‘\0’) { putch(str[i]); i++; } } Khai báo biến theo dạng trỏ:  Cú pháp: char *;  Ví dụ: char *hoten ; //hoten chiếm bytes nhớ //nhưng chưa cung cấp chỗ cho liệu dùng malloc, calloc để cấp vùng nhớ Ví dụ: Chúng ta xem đoạn chương trình sau việc sử dụng cách khai báo dạng trỏ void main() { char *hoten; hoten=(char*)malloc(20); printf(“nhap ho ten “); gets(hoten); printf(“Ho ten: %s”,hoten); } Vừa khai báo vừa gán giá trị:  Cú pháp: char []=;  Ví dụ: char hoten[]=“nguyen van a”; Các thao tác chuỗi ký tự a Nhập chuỗi ký tự: scanf() gets()  scanf(char* str): nhập khoảng trống  gets(char *str): nhận chuỗi đến ấn Enter  Ví dụ: Chương trình sau sử dụng hàm scanf gets để nhập giá trị chuổi vào nhớ void main(){ char chuoi1, chuoi2; b c d e f g h i j printf(“Nhap chuoi 1:”); gets(chuoi1); printf(“Nhap chuoi 2:”); scanf(“%s”,&chuoi2); printf(“Chuoi 1:”, chuoi1, “Chuoi 2:”, chuoi2); getch() ; } Phép gán chuỗi:  (=) Chỉ sử dụng cho biến trỏ Ví dụ: Sử dụng toán tử (=) không char chuoi; chuoi=“chao cac ban”; // sai Ví dụ: Sử dung (=) cho biến trỏ char *chuoi; chuoi=(char*)calloc(30,sizeof(char)); chuoi=“Chao cac ban!”;  Sử dụng hàm chep: strcpy(char* s1,char*s2) è Sao chép chuỗi s2 cho s1 Phép công chuỗi: strcat(char*s1, char*s2) Nối chuỗi s2 vào chuỗi s1 Tìm vị trí khác hai chuỗi: strspn(char*s1, char*s2) Ví dụ: Tìm vị trí khác hai chuỗi char *hoten=“nguyen van hung”; char *ho=“nguyen van”; int i=strspn(hoten,ho); Xác định chiều dài chuỗi: strlen(const char*s1) Ví dụ: char *s=“abcdef”; int l=strlen(s); Đổi chữ thường chữ Hoa ngược lại  Thường è Hoa: char*strupr(char* s)  Hoa è Thường: char* strlwr(char*s) Ví dụ: Đổi thường thành Hoa char * s=“abcd”; strupr(s) Đảo ngược chuỗi: char* strrev(char*s) Ví dụ: char *str, *s; str=(char*) calloc(20,sizeof(char)); s=(char*) calloc(20,sizeof(char)); …… s=strrev(str); Sao chép chuỗi:  Sao chép chuỗi nguồn sang chuỗi đích: Cú pháp: char* strcpy(char* dich, char* nguon) Ví dụ: char nguon[]=“DHSPDT”, dich[20]; strcpy(dich,nguon);  Sao chép phần chuỗi nguồn sang chuỗi đích: Cú pháp: char* strncpy(char* dich, const char *nguon, int vitri) Ý nghĩa: Sao chép chuỗi nguon sang chuỗi dich đến vị trí vitri Trích chuỗi: char* strchr(const char *str, char c) è Trích từ vị trí ký tự c đến hết chuỗi str Ví dụ: char *nguon, *dich, c; …… dich=strchr(nguon,c); Tìm kiếm liệt kê nội dung chuỗi  Hàm strstr(): Tìm kiếm xuất chuỗi phụ s2 chuỗi s1 Kết trỏ trỏ đến phần tư chuỗi s1 có chứa s2 trả NULL không thấy s2 s1 Cú pháp: char* strstr(const char*s1, const char*s2) Ví dụ: Liệt kê danh sách theo họ tên void main() { char *ho, *hoten[5]={“nguyen van a”, “tran van c”, “nguyen d”,”le diem”,”Nguyen va di” }; int i; for(i=0;is2 =0: è s1=s2

Ngày đăng: 22/12/2016, 13:38

Xem thêm

w