Bài giảng Lập trình - Bài 6: Xử lý chuỗi và con trỏ - Trường Đại học Khoa học tự nhiên TP Hồ Chí Minh

Ý nghĩa khai báo một mảng kiểu ký tự tên là str có 25 phần tử ( như vậy tối đa ta có thể nhập 24 ký tự vì phần tử thứ 25 đã chứa ký tự kết thúc chuỗi ‘\0’.

Bài giảng Lập trình - Bài 6: Xử lý chuỗi và con trỏ - Trường Đại học Khoa học tự nhiên TP Hồ Chí Minh trang 1

Trang 1

Bài giảng Lập trình - Bài 6: Xử lý chuỗi và con trỏ - Trường Đại học Khoa học tự nhiên TP Hồ Chí Minh trang 2

Trang 2

Bài giảng Lập trình - Bài 6: Xử lý chuỗi và con trỏ - Trường Đại học Khoa học tự nhiên TP Hồ Chí Minh trang 3

Trang 3

Bài giảng Lập trình - Bài 6: Xử lý chuỗi và con trỏ - Trường Đại học Khoa học tự nhiên TP Hồ Chí Minh trang 4

Trang 4

Bài giảng Lập trình - Bài 6: Xử lý chuỗi và con trỏ - Trường Đại học Khoa học tự nhiên TP Hồ Chí Minh trang 5

Trang 5

Bài giảng Lập trình - Bài 6: Xử lý chuỗi và con trỏ - Trường Đại học Khoa học tự nhiên TP Hồ Chí Minh trang 6

Trang 6

Bài giảng Lập trình - Bài 6: Xử lý chuỗi và con trỏ - Trường Đại học Khoa học tự nhiên TP Hồ Chí Minh trang 7

Trang 7

Bài giảng Lập trình - Bài 6: Xử lý chuỗi và con trỏ - Trường Đại học Khoa học tự nhiên TP Hồ Chí Minh trang 8

Trang 8

Bài giảng Lập trình - Bài 6: Xử lý chuỗi và con trỏ - Trường Đại học Khoa học tự nhiên TP Hồ Chí Minh trang 9

Trang 9

Bài giảng Lập trình - Bài 6: Xử lý chuỗi và con trỏ - Trường Đại học Khoa học tự nhiên TP Hồ Chí Minh trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 34 trang Danh Thịnh 09/01/2024 980
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Lập trình - Bài 6: Xử lý chuỗi và con trỏ - Trường Đại học Khoa học tự nhiên TP Hồ Chí Minh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình - Bài 6: Xử lý chuỗi và con trỏ - Trường Đại học Khoa học tự nhiên TP Hồ Chí Minh

Bài giảng Lập trình - Bài 6: Xử lý chuỗi và con trỏ - Trường Đại học Khoa học tự nhiên TP Hồ Chí Minh
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
Bài 6:
Xử Lý Chuỗi & Con trỏ
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
2
1. Khái niệm và cấu trúc về chuỗi
2. Các hàm nhập xuất chuỗi
3. Một số hàm cơ bản về chuỗi
4. Mảng và chuỗi
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
3
1. Khái niệm
• Chuỗi là một mảng ký tự được kết thúc bằng ký tự
null (‘\0’).
• Ký tự null (‘\0’) là ký tự dùng để kết thúc Chuỗi
• Hằng Chuỗi là Chuỗi được bao quanh bởi cặp dấu
nháy đôi. Ví dụ: “Hello”
• Ví dụ: để khai báo một mảng str chứa chuỗi có độ dài
20 ký tự, ta khai báo:
char str[21];
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
4
1. 1. Khai báo và khởi tạo Chuỗi
Có 2 cách khai báo và khởi tạo Chuỗi
– Cách 1: Dùng mảng một chiều
Ví dụ: char str[12];
char [Chiều dài tối đa] 
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
5
1. 1. Khai báo và khởi tạo Chuỗi
Ví dụ: char str[25]; 
 Ý nghĩa khai báo một mảng kiểu ký tự
tên là str có 25 phần tử ( như vậy tối đa ta có
thể nhập 24 ký tự vì phần tử thứ 25 đã chứa
ký tự kết thúc chuỗi ‘\0’.
Lưu ý: Chuỗi ký tự được kết thúc bằng ký tự
‘\0’. Do đó khi khai báo độ dài của chuỗi
luôn luôn khai báo dư 1 phần tử để chứa ký
tự ‘\0’.
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
6
− Cách 2: Dùng con trỏ
•Ví dụ: char *str; 
 Trong khai báo này, bộ nhớ sẽ dành 2
byte để lưu trữ địa chỉ của biến con trỏ
str đang chỉ đến, chưa cung cấp nơi để
lưu trữ dữ liệu.
char *
1. 1. Khai báo và khởi tạo Chuỗi
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
7
− Cách 2: Dùng con trỏ
 Trước khi sử dụng phải dùng từ khóa
new để cấp phát vùng nhớ.
Ví dụ:
char *str;
str = new char[51];//Cấp phát 51 ký tự
1. 1. Khai báo và khởi tạo Chuỗi
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
8
1. 1. Khai báo và khởi tạo Chuỗi
Chuỗi ký tự giống như mảng do đó để khởi
tạo một Chuỗi ký tự với những giá trị xác
định ta có thể thực hiện tương tự như với
mảng.
char [ ]=
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
9
1. 1. Khai báo và khởi tạo Chuỗi
Ví dụ:
char str[] = {‘H’, ’e’, ’l’, ’l’, ’o’, ’\0’};
char str[] = “Hello”;
char *str = “Hello”;
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
10
2.1. Nhập Chuỗi
Để nhập dữ liệu cho biến Chuỗi, ta dùng
hàm gets() của thư viện stdio.h.
Hàm gets() đọc các ký tự từ bàn phím 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.
char *gets(char *s);
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
11
 Lưu ý: Khi dùng cin>> để nhập dữ liệu cho
chuỗi, chương trình sẽ tự động ngắt chuỗi khi
gặp ký tự khoảng trắng trong chuỗi. Do đó, để
chuỗi không bị ngắt khi gặp ký tự khoảng trắng,
ta sẽ dùng hàm gets(), hoặc cin.getline() thay vì
hàm cin thông thường.
2.1. Nhập Chuỗi
*cin.getline(chuỗi, số ký tự tối đa);
*Ví dụ:
char *str;
str = new char [30];
cin.getline(str, 30);
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
12
2.2. Xuất Chuỗi
Để xuất Chuỗi ra màn hình, ta dùng hàm
puts() của thư viện stdio.h.
Hoặc ta có thể dùng cout
cout << s;
int puts(const char *s);
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
13
Ví dụ:
#include 
#include 
int main()
{
char str[20];
cout<<“Nhap chuoi:";
gets(str);
cout<<"\n Xuat chuoi:";
puts(str);
return 0;
}
2.2. Xuất Chuỗi
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
14
2.2. Xuất Chuỗi
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
15
3. Các hàm thao tác trên Chuỗi
Để sử dụng các hàm này, ta phải khai báo 
dòng lệnh sau:
#include 
Sao chép nội dung chuỗi nguồn vào 
chuỗi đích, nội dung của chuỗi đích sẽ bị 
xóa.
strcpy(char *đích, char *nguồn);
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
16
3. Các hàm thao tác trên Chuỗi
Ví dụ: strcpy(s1, s2): Sao chép Chuỗi s2 vào s1
#include 
#include 
#include 
void main()
{
char str1[20], str2[20];
cout<<"nhap chuoi 1:"; gets(str1);
strcpy(str2,str1);
cout<<"\nXuat chuoi 2:"; puts(str2);
}
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
17
3. Các hàm thao tác trên Chuỗi
Chép n ký tự từ chuỗi nguồn sang chuỗi
đích. Nếu chiều dài nguồn < n thì hàm sẽ
điền khoảng trắng cho đủ n ký tự vào đích.
strncpy(char *đích, char *nguồn, int n);
Ví dụ:
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
18
3. Các hàm thao tác trên Chuỗi
Nối chuỗi s2 vào cuối chuỗi s1
strcat(s1, s2)
Ví dụ:
#include 
#include 
#include 
void main()
{
char str1[20], str2[20];
cout<<"nhap chuoi 1:"; gets(str1);
cout<<"\nhap chuoi 2:"; gets(str2);
strcat(str1,str2);
cout<<"\nXuat chuoi sau khi noi:";
puts(str1);
}
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
19
3. Các hàm thao tác trên Chuỗi
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);
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
20
3. Các hàm thao tác trên Chuỗi
• strchr(s1, ch) : Trả về con trỏ đến vị trí xuất
hiện đầu tiên của ký tự ch trong Chuỗi s1
Ví dụ: 
void main()
{
char *p, h, str1[20];
cout<<"nhap chuoi 1:”; gets(str1);
cout>h;
p= strchr(str1,h);
if(p==NULL) cout<<"Khong tim thay ";
else cout<<"Tim thay tai vi tri "<<(p-str1);

File đính kèm:

  • pdfbai_giang_lap_trinh_bai_6_xu_ly_chuoi_va_con_tro_truong_dai.pdf