1. Giới thiệu
y Chuổi là một mảng ký tự được kết thúc
bằng ký tự null (‘\0’).
y Ký tự null (‘\0’) là ký tự dùng để kết
thúc chuổi
y Hằng chuổi là chuổi được bao quanh bởi
cặp dấu nháy đôi. Ví dụ: "Hello"
18 trang |
Chia sẻ: phuongt97 | Lượt xem: 692 | Lượt tải: 0
Nội dung tài liệu Bài giảng Phương pháp lập trình - Chương 7: Chuỗi kí tự (String) - Võ Quang Hoàng Khang, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
CHƯƠNG 7
CHUỔI KÝ TỰ
(String)
1. Giới thiệu
y Chuổi là một mảng ký tự được kết thúc
bằng ký tự null (‘\0’).
y Ký tự null (‘\0’) là ký tự dùng để kết
thúc chuổi
y Hằng chuổi là chuổi được bao quanh bởi
cặp dấu nháy đôi. Ví dụ: "Hello"
2. Khai báo và khởi tạo chuổi
Có 2 cách khai báo và khởi tạo chuổi
y Cách 1: Dùng mảng một chiều
h Tê biế [Chiề dài tối đ ]
Ví d h t [12]
c ar u a
y ụ: c ar s r ;
Trong khai báo này, bộ nhớ sẽ cung
ấ ể ữ ộc p 12+1 bytes đ lưu tr n i dung
của chuỗi ký tự str; byte cuối cùng lưu
ữ ký ‘\ ’ để kế hú h ỗtr tự 0 t t c c u i.
2. Khai báo và khởi tạo chuổi.
Cách 2: Dùng con trỏ
char *
yVí dụ: char *str;
T kh i bá à bộ hớ ẽ dà h 2rong a o n y, n s n
byte để lưu trữ địa chỉ của biến con trỏ
t đ hỉ đế hư ấ ơi đểs r ang c n, c a cung c p n
lưu trữ dữ liệu.
2. Khai báo và khởi tạo chuổi.
y 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 [ ]=
2. Khai báo và khởi tạo chuổi.
y Ví dụ:
char str[] = {‘H’, ’e’, ’l’, ’l’, ’o’, ’\0’};
char str[] = “Hello”;
char *str = “Hello”;
3. Nhập chuổi
y Để nhập dữ liệu cho biến chuổi, ta dùng
hàm gets() của thư viện stdio.h.
h * t ( h * )
y Hàm gets() đọc các ký tự từ bàn phím
c ar ge s c ar s ;
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.
y Hoặc ta có thể dùng cin >> s;
4. Xuất chuổi
y Để 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);
y Hoặc ta có thể dùng cout
y cout << s;
Ví dụ:
#include
#include
int main()
{
char str[20];
cout<<"nhap chuoi:";
gets(str);
cout<<"\nXuat chuoi:";
puts(str);
return 0;
}
5. Các hàm thao tác trên chuổi
y strcpy(s1, s2): Sao chép chuổi s2 vào s1
í dV ụ:
#include
#include .
#include
void main()
{
char str1[20], str2[20];
t " h h i 1 " t ( t 1)cou << n ap c uo : ; ge s s r ;
strcpy(str2,str1);
cout<<"\nXuat chuoi 2:"; puts(str2);
}
5. Các hàm thao tác trên chuổi
y strcat(s1, s2): Nối chuổi s2 vào cuối chuổi s1
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);
}
5. Các hàm thao tác trên chuổi
y strchr(s1, ch) : Trả về con trỏ đến vị trí
ất hiện đầ tiên của ký t ch t ong ch ổi s1xu u ự r u
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);
}
5. Các hàm thao tác trên chuổi
y strstr(s1, s2): Trả về con trỏ đến vị trí xuất hiện
ầ ổđ u tiên của chu i s2 trong s1.
Ví dụ: void main()
{ h * [ ] [ ]c ar p, str1 20 , str2 20 ;
cout<<"nhap chuoi 1:"; gets(str1);
cout<<"nhap chuoi 2:"; gets(str2);
p= strstr(str1,str2);
if(p==NULL)
cout<<"Khong tim thay ";
else
cout<<"Tim thay tai vi tri "<<(p-str1);
}
6. Mảng các chuổi
y Mảng các chuổi là một mảng ký tự hai
chiều. Kích thước của chỉ mục thứ nhất
là số chuổi và kích thước của chỉ mục
thứ hai xác định chiều dài lớn nhất của
mỗi chuổi.
Ví dụ: char str[5][80];
Khai báo một mảng của 5 chuổi mỗi,
chuổi có chiều dài tối đa là 79 ký tự.
6. Mảng các chuổi
y Khai báo và khởi tạo mảng các chuổi
char arrayList[][length] = {
constantString1,
constantString2,
...
constantStringN};
y Ví dụ:
char listOfPL[][10] = {“Pascal”, “C++”, “C#”};
6. Mảng các chuổi
Ví dụ:
void main()
{
h li t[5][20]c ar s ;
for(int i=0; i<5; i++)
{
cout>list[i];
}
for(int j=0; j<5; j++)
cout<<" "<<list[j];
}
7. Mảng con trỏ đến các chuổi
y Ngoài cách dùng mảng ký tự hai chiều để lưu
ổ ểtrữ mảng các chu i, ta có th dùng mảng của
các con trỏ. Mỗi con trỏ sẽ chứa địa chỉ của
chuổi
y Ví dụ:
h * t [20]c ar s r ;
void main()
{
char *name[5];
for(int i=0 ; i<5 ; i++)
name[i] = (char *)malloc(20);
for(int i=0 ; i<5 ; i++)
{
cout << "Input name " << i+1 <<": ";
gets(name[i]);
}
cout << "List of names: ";
for(int i=0 ; i<5 ; i++)
cout << name[i] << ", ";
}
Các file đính kèm theo tài liệu này:
- bai_giang_phuong_phap_lap_trinh_chuong_7_chuoi_ki_tu_string.pdf