Tải bản đầy đủ (.ppt) (15 trang)

Lập trình C. Các thao tác trên chuỗi

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (73.51 KB, 15 trang )

Chuỗi ký tự
Nguyễn Văn Khiết


Nội dung
• Chuỗi ký tự
• Các thao tác trên chuỗi
• Bài tập


Chuỗi ký tự
• Chuỗi là một mảng của các ký tự và giá trị sau ký
tự cuối cùng của chuỗi là null.
• Ví dụ
char str[] = “hello“;

• Hoặc
char str[6];
str[0] = ‘h';
str[1] = ' e';
str[2] = 'l';
str[3] = ‘l';
str[4] = ‘o';
str[5] = 0;


Chuỗi ký tự
• Khi C gặp một chuỗi hằng, bản thân chuỗi
đó được xem như tên của mảng ẩn.
• Tên của mảng tương đương với địa chỉ
phần tử đầu tiên, vì vậy chuỗi hằng cũng


là một con trỏ chỉ tới phần tử đầu tiên của
mảng ẩn
• Hiddenstring.cpp


Chuỗi ký tự
• Thao tác sau là khơng đúng:
char s[80] = “This is a string”, *p;
s = “This new string”;

vì s là con trỏ hằng.


scanf, gets, puts


scanf : khơng nhập chuỗi đến ký tự trắng
char s[100];
scanf("%s",s);
printf ("%s\n",s);



gets : nhập chuỗi bao gồm ký tự trắng
char s[100];
gets(s);
printf ("%s\n",s);





puts : xuất cả chuỗi
putchar : xuất ký tự


Các thao tác trên chuỗi
• strlen
– strlen(s) : trả về chiều dài của chuỗi s. (khơng
tính ký tự null)


Các thao tác trên chuỗi
• strcpy và strncpy
– strcpy(s1,s2): copy chuỗi s2 vào chuỗi s1.
(strcpy1.cpp)
– strncpy(s1,s2,n): copy n ký tự đầu tiên của
chuỗi s2 vào chuỗi s1. s1 phải có đội lớn đủ
để chứa n ký tự.
• n>strlen(s2): giống strcpy
• n<=strlen(s1): an tồn vì ‘\0’ của s1 vẫn cịn
• strlen(s1)s1 khơng cịn =>phải thêm s1[n] = ‘\0’;


Các thao tác trên chuỗi
• strcmp và strncmp
– strcmp(s1,s2): so sánh 2 chuỗi s1 và s2 (dựa vào
ASCII)
-1: s10: s1=s2

1: s1>s2
- stricmp(s1,s2): so sánh không phân biệt hoa
thường
- strncmp(s1,s2, n)
- strcmp1.cpp


Các thao tác trên chuỗi
• strcat và strncat
– strcat(s1,s2): nối chuỗi s2 vào sau chuỗi s1.
s1 phải đủ lớn để chứa cả 2 chuỗi
– strncat(s1,s2, n)
- Strcat1.cpp


Các thao tác trên chuỗi
• strstr
– strstr(s1,s2): tìm vị trí xuất hiện của chuỗi s2 trong
s1. Trả về con trỏ tại vị trí xuất hiện nếu tìm thấy,
trả về NULL nếu khơng tìm thấy.
(strstr1.cpp)

• strchr
– strchr(s1,ch): tìm vị trí xuất hiện của ký tự ch trong
s1. Trả về con trỏ tại vị trí xuất hiện nếu tìm thấy,
trả về NULL nếu khơng tìm thấy.
(strchr1.cpp)


Chuyển đổi kiểu dữ liệu






atoi() : chuyển chuỗi sang int
atol( ) : chuyển chuỗi sang long
atof( ) : chuyển chuỗi sang float
Atoi1.cpp


Bài tập
• Cài đặt lại các hàm strcpy, strcat, strstr,
strchr, strcmp, …
• Cài đặt các hàm thêm một ký tự/chuỗi
vào một vị trí cho trước
• Cài đặt hàm xóa một ký tự tại một vị trí
cho trước trong chuỗi


Bài tập
• Cài đặt hàm đổi các ký tự trong chuỗi
thành ký tự hoa/thường
• Cài đặt hàm đổi tồn bộ các ký tự bắt đầu
1 từ trong chuỗi thành ký tự hoa, các ký tự
cịn lại thành ký tự thường
• Cài đặt hàm bỏ toàn bộ khoảng trắng đầu
chuỗi, cuối chuỗi và giữa hai từ trong
chuỗi còn đúng một khoảng trắng



Bài tập
• Cài đặt hàm tìm từ có chiều dài lớn/nhỏ
nhất trong chuỗi.
• Cài đặt hàm đếm số từ có trong chuỗi
• Cài đặt hàm xuất ra chuỗi con chung lớn
nhất của hai chuỗi



×