Bài giảng Nhập môn lập trình - Bài 6: Xử lý chuỗi & con trỏ (Phần 1)

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  
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  
2
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  
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];  
3
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  
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  
char <Tên biến> [Chiều dài tối đa]  
❖Ví dụ: char str[12];  
4
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  
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’.  
5
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  
1. 1. Khai báo và khởi tạo Chuỗi  
− Cách 2: Dùng con trỏ  
char *<Tên biến>  
•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.  
6
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  
1. 1. Khai báo và khởi tạo Chuỗi  
− 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ự  
7
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  
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 <Biến>[ ]=<”Hằng Chuỗi ”>  
8
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  
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”;  
9
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. 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.  
char *gets(char *s);  
❖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.  
10  
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. Nhập Chuỗi  
❖ 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.  
*cin.getline(chuỗi, số ký tự tối đa);  
*Ví dụ:  
char *str;  
str = new char [30];  
cin.getline(str, 30);  
11  
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.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.  
int puts(const char *s);  
❖Hoặc ta có thể dùng cout  
cout << s;  
12  
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.2. Xuất Chuỗi  
❖Ví dụ:  
#include <iostream.h>  
#include <stdio.h>  
int main()  
{
char str[20];  
cout<<“Nhap chuoi:";  
gets(str);  
cout<<"\n Xuat chuoi:";  
puts(str);  
return 0;  
}
13  
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.2. Xuất Chuỗi  
14  
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. 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 <string.h>  
❖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);  
15  
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. 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 <iostream.h>  
#include <stdio.h>  
#include <string.h>  
void main()  
{
char str1[20], str2[20];  
cout<<"nhap chuoi 1:"; gets(str1);  
strcpy(str2,str1);  
cout<<"\nXuat chuoi 2:"; puts(str2);  
}
16  
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. 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ụ:  
17  
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. 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 <iostream.h>  
#include <stdio.h>  
#include <string.h>  
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);  
}
18  
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. 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);  
19  
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. 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<<"Nhap ktu muon tim:"; cin>>h;  
p= strchr(str1,h);  
if(p==NULL) cout<<"Khong tim thay ";  
else cout<<"Tim thay tai vi tri "<<(p-str1);  
}
20  
Trung Tâm Tin Học – Ngành Mạng và Thiết Bị Di Động  
Tải về để xem bản đầy đủ
pptx 34 trang baolam 19200 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Nhập môn lập trình - Bài 6: Xử lý chuỗi & con trỏ (Phần 1)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pptxbai_giang_nhap_mon_lap_trinh_bai_6_xu_ly_chuoi_con_tro.pptx