SlideShare a Scribd company logo
VCVC
&&
BBBB
11
Nội dung
NMLT - Chuỗi ký tự
Khái niệm1
Khởi tạo2
Các thao tác trên chuỗi ký tự3
Bài tập4
VCVC
&&
BBBB
22
Khái niệm
Khái niệm
 Kiểu char chỉ chứa được một ký tự. Để lưu
trữ một chuỗi (nhiều ký tự) ta sử dụng mảng
(một chiều) các ký tự.
 Chuỗi ký tự kết thúc bằng ký tự ‘0’ (null)
 Độ dài chuỗi = kích thước mảng – 1
Ví dụ
NMLT - Chuỗi ký tự
char hoten[30]; // Dài 29 ký tự
char ngaysinh[9]; // Dài 8 ký tự
VCVC
&&
BBBB
33
Khởi tạo
Khởi tạo như mảng thông thường
 Độ dài cụ thể
 Tự xác định độ dài
NMLT - Chuỗi ký tự
char s[10] = {‘T’, ‘H’, ‘C’, ‘S’, ‘A’, ‘ ’, ‘0’};
char s[10] = “THCS A”; // Tự động thêm ‘0’
char s[] = {‘T’, ‘H’, ‘C’, ‘S’, ‘ ’, ‘A’, ‘0’};
char s[] = “THCS A”; // Tự động thêm ‘0’
‘T’‘T’ ‘H’‘H’ ‘C’‘C’ ‘S’‘S’ ‘ ’‘ ’ ‘A’‘A’
0 1 2 3 4 5 6 7 8 9
‘T’‘T’ ‘H’‘H’ ‘C’‘C’ ‘S’‘S’ ‘ ’‘ ’ ‘A’‘A’
0 1 2 3 4 5
‘0’‘0’
‘0’‘0’
6
VCVC
&&
BBBB
44
Xuất chuỗi
Sử dụng hàm printf với đặc tả “%s”
Sử dụng hàm puts
NMLT - Chuỗi ký tự
char monhoc[50] = “Tin hoc co so A”;
printf(“%s”, monhoc); // Không xuống dòng
char monhoc[50] = “Tin hoc co so A”;
puts(monhoc); // Tự động xuống dòng
 printf(“%sn”, monhoc);
Tin hoc co so A
Tin hoc co so A
_
_
VCVC
&&
BBBB
55
Nhập chuỗi
Sử dụng hàm scanf với đặc tả “%s”
 Chỉ nhận các ký tự từ bàn phím đến khi gặp
ký tự khoảng trắng hoặc ký tự xuống dòng.
 Chuỗi nhận được không bao gồm ký tự
khoảng trắng và xuống dòng.
NMLT - Chuỗi ký tự
char monhoc[50];
printf(“Nhap mot chuoi: “);
scanf(“%s”, monhoc);
printf(“Chuoi nhan duoc la: %s”, monhoc);
Nhap mot chuoi: Tin hoc co so A
Chuoi nhan duoc la: Tin_
VCVC
&&
BBBB
66
Nhập chuỗi
Sử dụng hàm gets
 Nhận các ký tự từ bàn phím đến khi gặp ký tự
xuống dòng.
 Chuỗi nhận được là những gì người dùng
nhập (trừ ký tự xuống dòng).
NMLT - Chuỗi ký tự
char monhoc[50];
printf(“Nhap mot chuoi: “);
gets(monhoc);
printf(“Chuoi nhan duoc la: %s”, monhoc);
Nhap mot chuoi: Tin hoc co so A
Chuoi nhan duoc la: Tin hoc co so A _
VCVC
&&
BBBB
77
Một số hàm thao tác trên chuỗi
Thuộc thư viện <string.h>
 Strcpy : dùng để copy kí tự
 Strdup : tạo ra chuỗi mới
 strlwr/strupr: chuyển đổi kí tự sag chữ hoa/
thường
 Strrev:
 strcmp/stricmp
 Strcat:dổi chuỗi
 Strlen: lấy độ dài của chuỗi
 Strstr:
NMLT - Chuỗi ký tự
VCVC
&&
BBBB
88
Hàm sao chép chuỗi
NMLT - Chuỗi ký tự
Sao chép chuỗi src sang chuỗi dest, dừng
khi ký tự kết thúc chuỗi ‘0’ vừa được chép.
! dest phải đủ lớn để chứa src
Địa chỉ chuỗi dest
char s[100];
s = “Tin hoc co so A”; // sai
strcpy(s, “Tin hoc co so A”); // đúng
char *strcpy(char dest[], const char src[])char *strcpy(char dest[], const char src[])
VCVC
&&
BBBB
99
Hàm tạo bản sao
NMLT - Chuỗi ký tự
Tạo bản sao của một chuỗi s cho trước.
Hàm sẽ tự tạo vùng nhớ đủ chứa chuỗi s.
Thành công: Địa chỉ chuỗi kết quả
Thất bài: null
char *s;
s = strdup(“Tin hoc co so A”);
char *strdup(const char s[])char *strdup(const char s[])
VCVC
&&
BBBB
1010
Hàm chuyển chuỗi thành chữ thường
NMLT - Chuỗi ký tự
Chuyển chuỗi s thành chuỗi thường (‘A’
thành ‘a’, ‘B’ thành ‘b’, …, ‘Z’ thành ‘z’)
Địa chỉ chuỗi s
char s[] = “Tin hoc co so A!!!”;
strlwr(s);
puts(s); // tin hoc co so a!!!
char *strlwr(char *s)char *strlwr(char *s)
VCVC
&&
BBBB
1111
Hàm chuyển chuỗi thành chữ IN
NMLT - Chuỗi ký tự
Chuyển chuỗi s thành chuỗi in (‘a’ thành ‘A’,
‘b’ thành ‘B’, …, ‘z’ thành ‘Z’)
Địa chỉ chuỗi s
char s[] = “Tin hoc co so A!!!”;
strupr(s);
puts(s); // TIN HOC CO SO A!!!
char *strupr(char *s)char *strupr(char *s)
VCVC
&&
BBBB
1212
Hàm đảo ngược chuỗi
NMLT - Chuỗi ký tự
Đảo ngược thứ tự các ký tự trong chuỗi (trừ
ký tự kết thúc chuỗi)
Địa chỉ chuỗi kết quả
char s[] = “Tin hoc co so A!!!”;
strrev(s);
puts(s); // !!!A os oc coh niT
char *strrev(char *s)char *strrev(char *s)
VCVC
&&
BBBB
1313
Hàm so sánh hai chuỗi
NMLT - Chuỗi ký tự
So sánh hai chuỗi s1 và s2 (phân biệt hoa
thường)
< 0 nếu s1 < s2
== 0 nếu s1 == s2
>0 nếu s1 > s2
char s1[] = “tin hoc co so A!!!”;
char s2[] = “hoc tin co so A!!!”;
int kq = strcmp(s1, s2); // => kq > 0
int strcmp(const char *s1, const char *s2)int strcmp(const char *s1, const char *s2)
VCVC
&&
BBBB
1414
Hàm so sánh hai chuỗi
NMLT - Chuỗi ký tự
So sánh hai chuỗi s1 và s2 (không phân
biệt hoa thường)
< 0 nếu s1 < s2
== 0 nếu s1 == s2
>0 nếu s1 > s2
char s1[] = “tin hoc co so A!!!”;
char s2[] = “TIN HOC CO SO A!!!”;
int kq = stricmp(s1, s2); // => kq == 0
int stricmp(const char *s1, const char *s2)int stricmp(const char *s1, const char *s2)
VCVC
&&
BBBB
1515
Hàm nối hai chuỗi
NMLT - Chuỗi ký tự
Nối chuỗi src vào sau chuỗi dest.
! Chuỗi dest phải đủ chứa kết quả
Địa chỉ của chuỗi được nối
char s1[100] = “Tin hoc”;
char s2[] = “co so A!!!”;
strcat(s1, “ ”); // => “Tin hoc ”
strcat(s1, s2); // => “Tin hoc co so A!!!”
char* strcat(char *dest, const char *src)char* strcat(char *dest, const char *src)
VCVC
&&
BBBB
1616
Hàm tính độ dài chuỗi
NMLT - Chuỗi ký tự
Tính độ dài chuỗi s
size_t thay cho unsigned (trong <stddef.h>)
dùng để đo các đại lượng không dấu.
Độ dài chuỗi s
char s[] = “Tin hoc co so A!!!”;
int len = strlen(s); // => 18
size_t* strlen(const char *s)size_t* strlen(const char *s)
VCVC
&&
BBBB
1717
Hàm tìm chuỗi trong chuỗi
NMLT - Chuỗi ký tự
Tìm vị trí xuất hiện đầu tiên của s2 trong s1
Thành công: trả về con trỏ đến vị trí xuất
hiện đầu tiên của s2 trong s1.
Thất bại: trả về null
char s1[] = “Tin hoc co so A!!!”;
char s2[] = “hoc”;
if (strstr(s1, s2) != null)
printf(“Tim thay!”);
char* strstr(const char *s1, const char *s2)char* strstr(const char *s1, const char *s2)
VCVC
&&
BBBB
1818
Bài tập
Bài 1: Xem thêm một số hàm khác như
 atoi, atol, atof : đổi chuỗi thành số
 itoa, ltoa, ultoa: đổi số thành chuỗi
 strtok
Bài 2: Viết hàm upper(char s[]) đổi toàn bộ các
ký tự sang ký tự hoa (giống hàm strupr)
Bài 3: Viết hàm lower(char s[]) đổi toàn bộ các
ký tự sang ký tự thường (giống hàm strlwr)
Bài 4: Viết hàm proper(char s[]) đổi các ký tự
đầu tiên của mỗi từ sang ký tự hoa.
NMLT - Chuỗi ký tự
VCVC
&&
BBBB
1919
Bài tập
Bài 5: Viết hàm standard(char s[]) bỏ toàn bộ
khoảng trắng đầu chuỗi, cuối chuỗi và giữa 2 từ
trong s chỉ còn 1 khoảng trắng.
Bài 6: Xóa tất cả các khoảng trắng của s
Bài 7: Đếm xem có bao nhiêu từ trong s. Xuất
các từ trên các dòng liên tiếp.
Bài 8: Tìm từ có chiều dài dài nhất và in ra.
Bài 9: Trích ra n ký tự đầu tiên/cuối cùng/bắt đầu
tại vị trí pos.
NMLT - Chuỗi ký tự

More Related Content

What's hot

Nmlt c11 con_trocoban_in
Nmlt c11 con_trocoban_inNmlt c11 con_trocoban_in
Nmlt c11 con_trocoban_in
Huy Nguyễn
 
Nmlt c05 cau_lenhlap
Nmlt c05 cau_lenhlapNmlt c05 cau_lenhlap
Nmlt c05 cau_lenhlap
Minh Ngoc Tran
 
Nmlt c16 ky_thuatlaptrinhdequy
Nmlt c16 ky_thuatlaptrinhdequyNmlt c16 ky_thuatlaptrinhdequy
Nmlt c16 ky_thuatlaptrinhdequy
Minh Ngoc Tran
 
3 Function
3 Function3 Function
3 FunctionCuong
 
Nmlt C03 Cac Kieu Du Lieu Co So
Nmlt C03 Cac Kieu Du Lieu Co SoNmlt C03 Cac Kieu Du Lieu Co So
Nmlt C03 Cac Kieu Du Lieu Co SoCuong
 
Nmlt c02 gioi_thieunnltc
Nmlt c02 gioi_thieunnltcNmlt c02 gioi_thieunnltc
Nmlt c02 gioi_thieunnltc
Minh Ngoc Tran
 
Nmlt c01 cac_khainiemcobanvelaptrinh
Nmlt c01 cac_khainiemcobanvelaptrinhNmlt c01 cac_khainiemcobanvelaptrinh
Nmlt c01 cac_khainiemcobanvelaptrinh
Minh Ngoc Tran
 
Hướng dẫn làm bt về chuỗi.doc
Hướng dẫn làm bt về chuỗi.docHướng dẫn làm bt về chuỗi.doc
Hướng dẫn làm bt về chuỗi.docTrần Văn Nam
 
Hàm và Chuỗi
Hàm và ChuỗiHàm và Chuỗi
Hàm và Chuỗi
pnanhvn
 
Nmlt c10 cau_truc
Nmlt c10 cau_trucNmlt c10 cau_truc
Nmlt c10 cau_truc
Minh Ngoc Tran
 
String c++
String c++String c++
String c++
ptquang160492
 
Nmlt c06 ham_in
Nmlt c06 ham_inNmlt c06 ham_in
Nmlt c06 ham_in
Huy Nguyễn
 
Nmlt C08 Mang2 Chieu
Nmlt C08 Mang2 ChieuNmlt C08 Mang2 Chieu
Nmlt C08 Mang2 ChieuCuong
 
Nmlt C06 Ham
Nmlt C06 HamNmlt C06 Ham
Nmlt C06 HamCuong
 
Phần 9: Chuỗi ký tự
Phần 9: Chuỗi ký tựPhần 9: Chuỗi ký tự
Phần 9: Chuỗi ký tựHuy Rùa
 
Thu vien lap trinh c++
Thu vien lap trinh c++Thu vien lap trinh c++
Thu vien lap trinh c++
ptquang160492
 

What's hot (19)

Nmlt c11 con_trocoban_in
Nmlt c11 con_trocoban_inNmlt c11 con_trocoban_in
Nmlt c11 con_trocoban_in
 
Nmlt c05 cau_lenhlap
Nmlt c05 cau_lenhlapNmlt c05 cau_lenhlap
Nmlt c05 cau_lenhlap
 
Nmlt c16 ky_thuatlaptrinhdequy
Nmlt c16 ky_thuatlaptrinhdequyNmlt c16 ky_thuatlaptrinhdequy
Nmlt c16 ky_thuatlaptrinhdequy
 
3 Function
3 Function3 Function
3 Function
 
Nmlt C03 Cac Kieu Du Lieu Co So
Nmlt C03 Cac Kieu Du Lieu Co SoNmlt C03 Cac Kieu Du Lieu Co So
Nmlt C03 Cac Kieu Du Lieu Co So
 
Nmlt c02 gioi_thieunnltc
Nmlt c02 gioi_thieunnltcNmlt c02 gioi_thieunnltc
Nmlt c02 gioi_thieunnltc
 
Nmlt c01 cac_khainiemcobanvelaptrinh
Nmlt c01 cac_khainiemcobanvelaptrinhNmlt c01 cac_khainiemcobanvelaptrinh
Nmlt c01 cac_khainiemcobanvelaptrinh
 
Hướng dẫn làm bt về chuỗi.doc
Hướng dẫn làm bt về chuỗi.docHướng dẫn làm bt về chuỗi.doc
Hướng dẫn làm bt về chuỗi.doc
 
Hàm và Chuỗi
Hàm và ChuỗiHàm và Chuỗi
Hàm và Chuỗi
 
Nmlt c10 cau_truc
Nmlt c10 cau_trucNmlt c10 cau_truc
Nmlt c10 cau_truc
 
String c++
String c++String c++
String c++
 
Nmlt c06 ham_in
Nmlt c06 ham_inNmlt c06 ham_in
Nmlt c06 ham_in
 
Nmlt C08 Mang2 Chieu
Nmlt C08 Mang2 ChieuNmlt C08 Mang2 Chieu
Nmlt C08 Mang2 Chieu
 
Nmlt C06 Ham
Nmlt C06 HamNmlt C06 Ham
Nmlt C06 Ham
 
Tut6 solution
Tut6 solutionTut6 solution
Tut6 solution
 
Phần 9: Chuỗi ký tự
Phần 9: Chuỗi ký tựPhần 9: Chuỗi ký tự
Phần 9: Chuỗi ký tự
 
Chuong 2
Chuong 2Chuong 2
Chuong 2
 
Stl string
Stl stringStl string
Stl string
 
Thu vien lap trinh c++
Thu vien lap trinh c++Thu vien lap trinh c++
Thu vien lap trinh c++
 

Viewers also liked

chuỗi ký tự c++
chuỗi ký tự c++chuỗi ký tự c++
chuỗi ký tự c++
ptquang160492
 
Nmlt C07 Mang1 Chieu
Nmlt C07 Mang1 ChieuNmlt C07 Mang1 Chieu
Nmlt C07 Mang1 ChieuCuong
 
Nmlt C05 Cau Lenh Lap
Nmlt C05 Cau Lenh LapNmlt C05 Cau Lenh Lap
Nmlt C05 Cau Lenh LapCuong
 
Nmlt C09 Chuoi Ky Tu
Nmlt C09 Chuoi Ky TuNmlt C09 Chuoi Ky Tu
Nmlt C09 Chuoi Ky TuCuong
 
3 Function
3 Function3 Function
3 FunctionCuong
 
Open Innovation
Open InnovationOpen Innovation
Open Innovation
mariuxiMM
 
B'iwat0308
B'iwat0308B'iwat0308
B'iwat0308
GWROY
 
Tricópteros manuel y omar
Tricópteros manuel y omarTricópteros manuel y omar
Tricópteros manuel y omarPlecoptero
 
Oracionconjunta 1216409062698068 8
Oracionconjunta 1216409062698068 8Oracionconjunta 1216409062698068 8
Oracionconjunta 1216409062698068 8
lucyreina
 
Smartphone
SmartphoneSmartphone
Smartphone
Miguel_Briones
 
Dra. marina aula dia 02-10-13
Dra. marina   aula dia 02-10-13Dra. marina   aula dia 02-10-13
Dra. marina aula dia 02-10-13
Fernanda Moreira
 
Classroom language
Classroom languageClassroom language
Classroom language
María Díaz
 
Jula
JulaJula
Pink assessoria de imprensa
Pink assessoria de imprensaPink assessoria de imprensa
Pink assessoria de imprensa
jesicafernanda
 
Dacti
DactiDacti
Dualismo Presentation
Dualismo PresentationDualismo Presentation
Dualismo Presentation
Franklin Orellana
 
Exercícios números complexos
Exercícios números complexosExercícios números complexos
Exercícios números complexosBriefCase
 

Viewers also liked (20)

chuỗi ký tự c++
chuỗi ký tự c++chuỗi ký tự c++
chuỗi ký tự c++
 
Nmlt C07 Mang1 Chieu
Nmlt C07 Mang1 ChieuNmlt C07 Mang1 Chieu
Nmlt C07 Mang1 Chieu
 
Nmlt C05 Cau Lenh Lap
Nmlt C05 Cau Lenh LapNmlt C05 Cau Lenh Lap
Nmlt C05 Cau Lenh Lap
 
Nmlt C09 Chuoi Ky Tu
Nmlt C09 Chuoi Ky TuNmlt C09 Chuoi Ky Tu
Nmlt C09 Chuoi Ky Tu
 
3 Function
3 Function3 Function
3 Function
 
Open Innovation
Open InnovationOpen Innovation
Open Innovation
 
B'iwat0308
B'iwat0308B'iwat0308
B'iwat0308
 
Business
BusinessBusiness
Business
 
मुबाह
मुबाहमुबाह
मुबाह
 
Tricópteros manuel y omar
Tricópteros manuel y omarTricópteros manuel y omar
Tricópteros manuel y omar
 
Oracionconjunta 1216409062698068 8
Oracionconjunta 1216409062698068 8Oracionconjunta 1216409062698068 8
Oracionconjunta 1216409062698068 8
 
Smartphone
SmartphoneSmartphone
Smartphone
 
Dra. marina aula dia 02-10-13
Dra. marina   aula dia 02-10-13Dra. marina   aula dia 02-10-13
Dra. marina aula dia 02-10-13
 
Quiz
QuizQuiz
Quiz
 
Classroom language
Classroom languageClassroom language
Classroom language
 
Jula
JulaJula
Jula
 
Pink assessoria de imprensa
Pink assessoria de imprensaPink assessoria de imprensa
Pink assessoria de imprensa
 
Dacti
DactiDacti
Dacti
 
Dualismo Presentation
Dualismo PresentationDualismo Presentation
Dualismo Presentation
 
Exercícios números complexos
Exercícios números complexosExercícios números complexos
Exercícios números complexos
 

Similar to Nmlt c09 chuoi_kytu

Nmlt c09 chuoi_kytu_in
Nmlt c09 chuoi_kytu_inNmlt c09 chuoi_kytu_in
Nmlt c09 chuoi_kytu_in
Huy Nguyễn
 
Phan2 chuong8 chuoikitu
Phan2 chuong8 chuoikituPhan2 chuong8 chuoikitu
Phan2 chuong8 chuoikitu
Ly hai
 
Hướng dẫn làm bt về chuỗi.doc
Hướng dẫn làm bt về chuỗi.docHướng dẫn làm bt về chuỗi.doc
Hướng dẫn làm bt về chuỗi.doc
Hoang Dinh Vu
 
Chuong 2 - Cac cau truc du lieu co ban.pptx
Chuong 2 - Cac cau truc du lieu co ban.pptxChuong 2 - Cac cau truc du lieu co ban.pptx
Chuong 2 - Cac cau truc du lieu co ban.pptx
NhatMinh733974
 
Phan 2 chuong 8 (chuoi ky tu)
Phan 2   chuong 8 (chuoi ky tu)Phan 2   chuong 8 (chuoi ky tu)
Phan 2 chuong 8 (chuoi ky tu)Trần Văn Nam
 
Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)
Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)
Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)
KhanhPham
 
Bai giangtrenlop
Bai giangtrenlopBai giangtrenlop
Bai giangtrenlopHồ Lợi
 
4 Pointer String Struct
4 Pointer String  Struct4 Pointer String  Struct
4 Pointer String StructCuong
 
Bài 12: Kiểu xâu
Bài 12: Kiểu xâuBài 12: Kiểu xâu
Bài 12: Kiểu xâuMinh Lê
 
Pplthdt c03 kieu_dulieucoso_lopdungsan_v13.09a
Pplthdt c03 kieu_dulieucoso_lopdungsan_v13.09aPplthdt c03 kieu_dulieucoso_lopdungsan_v13.09a
Pplthdt c03 kieu_dulieucoso_lopdungsan_v13.09aPix Nhox
 
Bai 12 kx
Bai 12 kxBai 12 kx
Lec3. Ham.pdf
Lec3. Ham.pdfLec3. Ham.pdf
Lec3. Ham.pdf
KinHongnh
 
ngon-ngu-lap-trinh-python_C1_cac_khai_niem_(PII).pptx
ngon-ngu-lap-trinh-python_C1_cac_khai_niem_(PII).pptxngon-ngu-lap-trinh-python_C1_cac_khai_niem_(PII).pptx
ngon-ngu-lap-trinh-python_C1_cac_khai_niem_(PII).pptx
ssuser49db3c1
 
Chuong13
Chuong13Chuong13
Chuong13na
 

Similar to Nmlt c09 chuoi_kytu (20)

Nmlt c09 chuoi_kytu_in
Nmlt c09 chuoi_kytu_inNmlt c09 chuoi_kytu_in
Nmlt c09 chuoi_kytu_in
 
Phan2 chuong8 chuoikitu
Phan2 chuong8 chuoikituPhan2 chuong8 chuoikitu
Phan2 chuong8 chuoikitu
 
Hướng dẫn làm bt về chuỗi.doc
Hướng dẫn làm bt về chuỗi.docHướng dẫn làm bt về chuỗi.doc
Hướng dẫn làm bt về chuỗi.doc
 
Chuong 2 - Cac cau truc du lieu co ban.pptx
Chuong 2 - Cac cau truc du lieu co ban.pptxChuong 2 - Cac cau truc du lieu co ban.pptx
Chuong 2 - Cac cau truc du lieu co ban.pptx
 
Phan 2 chuong 8 (chuoi ky tu)
Phan 2   chuong 8 (chuoi ky tu)Phan 2   chuong 8 (chuoi ky tu)
Phan 2 chuong 8 (chuoi ky tu)
 
Session 17
Session 17Session 17
Session 17
 
Session 17
Session 17Session 17
Session 17
 
Lect09 string
Lect09 stringLect09 string
Lect09 string
 
Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)
Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)
Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)
 
Bai giangtrenlop
Bai giangtrenlopBai giangtrenlop
Bai giangtrenlop
 
4 Pointer String Struct
4 Pointer String  Struct4 Pointer String  Struct
4 Pointer String Struct
 
Bài 12: Kiểu xâu
Bài 12: Kiểu xâuBài 12: Kiểu xâu
Bài 12: Kiểu xâu
 
Pplthdt c03 kieu_dulieucoso_lopdungsan_v13.09a
Pplthdt c03 kieu_dulieucoso_lopdungsan_v13.09aPplthdt c03 kieu_dulieucoso_lopdungsan_v13.09a
Pplthdt c03 kieu_dulieucoso_lopdungsan_v13.09a
 
Bai 12 kx
Bai 12 kxBai 12 kx
Bai 12 kx
 
Session 11
Session 11Session 11
Session 11
 
Session 11
Session 11Session 11
Session 11
 
Lec3. Ham.pdf
Lec3. Ham.pdfLec3. Ham.pdf
Lec3. Ham.pdf
 
HằNg
HằNgHằNg
HằNg
 
ngon-ngu-lap-trinh-python_C1_cac_khai_niem_(PII).pptx
ngon-ngu-lap-trinh-python_C1_cac_khai_niem_(PII).pptxngon-ngu-lap-trinh-python_C1_cac_khai_niem_(PII).pptx
ngon-ngu-lap-trinh-python_C1_cac_khai_niem_(PII).pptx
 
Chuong13
Chuong13Chuong13
Chuong13
 

More from Minh Ngoc Tran

Chuong9 lop vadoituong
Chuong9 lop vadoituongChuong9 lop vadoituong
Chuong9 lop vadoituong
Minh Ngoc Tran
 
Bai tapktlt phan3
Bai tapktlt phan3Bai tapktlt phan3
Bai tapktlt phan3
Minh Ngoc Tran
 
Bai tapktlt phan2
Bai tapktlt phan2Bai tapktlt phan2
Bai tapktlt phan2
Minh Ngoc Tran
 
Bai tapktlt phan1
Bai tapktlt phan1Bai tapktlt phan1
Bai tapktlt phan1
Minh Ngoc Tran
 
Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Minh Ngoc Tran
 
Lap trinh c++ có lời giải 1
Lap trinh c++ có lời giải 1Lap trinh c++ có lời giải 1
Lap trinh c++ có lời giải 1Minh Ngoc Tran
 
Lap trinh c++ có lời giải 3
Lap trinh c++ có lời giải 3Lap trinh c++ có lời giải 3
Lap trinh c++ có lời giải 3Minh Ngoc Tran
 

More from Minh Ngoc Tran (7)

Chuong9 lop vadoituong
Chuong9 lop vadoituongChuong9 lop vadoituong
Chuong9 lop vadoituong
 
Bai tapktlt phan3
Bai tapktlt phan3Bai tapktlt phan3
Bai tapktlt phan3
 
Bai tapktlt phan2
Bai tapktlt phan2Bai tapktlt phan2
Bai tapktlt phan2
 
Bai tapktlt phan1
Bai tapktlt phan1Bai tapktlt phan1
Bai tapktlt phan1
 
Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2
 
Lap trinh c++ có lời giải 1
Lap trinh c++ có lời giải 1Lap trinh c++ có lời giải 1
Lap trinh c++ có lời giải 1
 
Lap trinh c++ có lời giải 3
Lap trinh c++ có lời giải 3Lap trinh c++ có lời giải 3
Lap trinh c++ có lời giải 3
 

Nmlt c09 chuoi_kytu

  • 1. VCVC && BBBB 11 Nội dung NMLT - Chuỗi ký tự Khái niệm1 Khởi tạo2 Các thao tác trên chuỗi ký tự3 Bài tập4
  • 2. VCVC && BBBB 22 Khái niệm Khái niệm  Kiểu char chỉ chứa được một ký tự. Để lưu trữ một chuỗi (nhiều ký tự) ta sử dụng mảng (một chiều) các ký tự.  Chuỗi ký tự kết thúc bằng ký tự ‘0’ (null)  Độ dài chuỗi = kích thước mảng – 1 Ví dụ NMLT - Chuỗi ký tự char hoten[30]; // Dài 29 ký tự char ngaysinh[9]; // Dài 8 ký tự
  • 3. VCVC && BBBB 33 Khởi tạo Khởi tạo như mảng thông thường  Độ dài cụ thể  Tự xác định độ dài NMLT - Chuỗi ký tự char s[10] = {‘T’, ‘H’, ‘C’, ‘S’, ‘A’, ‘ ’, ‘0’}; char s[10] = “THCS A”; // Tự động thêm ‘0’ char s[] = {‘T’, ‘H’, ‘C’, ‘S’, ‘ ’, ‘A’, ‘0’}; char s[] = “THCS A”; // Tự động thêm ‘0’ ‘T’‘T’ ‘H’‘H’ ‘C’‘C’ ‘S’‘S’ ‘ ’‘ ’ ‘A’‘A’ 0 1 2 3 4 5 6 7 8 9 ‘T’‘T’ ‘H’‘H’ ‘C’‘C’ ‘S’‘S’ ‘ ’‘ ’ ‘A’‘A’ 0 1 2 3 4 5 ‘0’‘0’ ‘0’‘0’ 6
  • 4. VCVC && BBBB 44 Xuất chuỗi Sử dụng hàm printf với đặc tả “%s” Sử dụng hàm puts NMLT - Chuỗi ký tự char monhoc[50] = “Tin hoc co so A”; printf(“%s”, monhoc); // Không xuống dòng char monhoc[50] = “Tin hoc co so A”; puts(monhoc); // Tự động xuống dòng  printf(“%sn”, monhoc); Tin hoc co so A Tin hoc co so A _ _
  • 5. VCVC && BBBB 55 Nhập chuỗi Sử dụng hàm scanf với đặc tả “%s”  Chỉ nhận các ký tự từ bàn phím đến khi gặp ký tự khoảng trắng hoặc ký tự xuống dòng.  Chuỗi nhận được không bao gồm ký tự khoảng trắng và xuống dòng. NMLT - Chuỗi ký tự char monhoc[50]; printf(“Nhap mot chuoi: “); scanf(“%s”, monhoc); printf(“Chuoi nhan duoc la: %s”, monhoc); Nhap mot chuoi: Tin hoc co so A Chuoi nhan duoc la: Tin_
  • 6. VCVC && BBBB 66 Nhập chuỗi Sử dụng hàm gets  Nhận các ký tự từ bàn phím đến khi gặp ký tự xuống dòng.  Chuỗi nhận được là những gì người dùng nhập (trừ ký tự xuống dòng). NMLT - Chuỗi ký tự char monhoc[50]; printf(“Nhap mot chuoi: “); gets(monhoc); printf(“Chuoi nhan duoc la: %s”, monhoc); Nhap mot chuoi: Tin hoc co so A Chuoi nhan duoc la: Tin hoc co so A _
  • 7. VCVC && BBBB 77 Một số hàm thao tác trên chuỗi Thuộc thư viện <string.h>  Strcpy : dùng để copy kí tự  Strdup : tạo ra chuỗi mới  strlwr/strupr: chuyển đổi kí tự sag chữ hoa/ thường  Strrev:  strcmp/stricmp  Strcat:dổi chuỗi  Strlen: lấy độ dài của chuỗi  Strstr: NMLT - Chuỗi ký tự
  • 8. VCVC && BBBB 88 Hàm sao chép chuỗi NMLT - Chuỗi ký tự Sao chép chuỗi src sang chuỗi dest, dừng khi ký tự kết thúc chuỗi ‘0’ vừa được chép. ! dest phải đủ lớn để chứa src Địa chỉ chuỗi dest char s[100]; s = “Tin hoc co so A”; // sai strcpy(s, “Tin hoc co so A”); // đúng char *strcpy(char dest[], const char src[])char *strcpy(char dest[], const char src[])
  • 9. VCVC && BBBB 99 Hàm tạo bản sao NMLT - Chuỗi ký tự Tạo bản sao của một chuỗi s cho trước. Hàm sẽ tự tạo vùng nhớ đủ chứa chuỗi s. Thành công: Địa chỉ chuỗi kết quả Thất bài: null char *s; s = strdup(“Tin hoc co so A”); char *strdup(const char s[])char *strdup(const char s[])
  • 10. VCVC && BBBB 1010 Hàm chuyển chuỗi thành chữ thường NMLT - Chuỗi ký tự Chuyển chuỗi s thành chuỗi thường (‘A’ thành ‘a’, ‘B’ thành ‘b’, …, ‘Z’ thành ‘z’) Địa chỉ chuỗi s char s[] = “Tin hoc co so A!!!”; strlwr(s); puts(s); // tin hoc co so a!!! char *strlwr(char *s)char *strlwr(char *s)
  • 11. VCVC && BBBB 1111 Hàm chuyển chuỗi thành chữ IN NMLT - Chuỗi ký tự Chuyển chuỗi s thành chuỗi in (‘a’ thành ‘A’, ‘b’ thành ‘B’, …, ‘z’ thành ‘Z’) Địa chỉ chuỗi s char s[] = “Tin hoc co so A!!!”; strupr(s); puts(s); // TIN HOC CO SO A!!! char *strupr(char *s)char *strupr(char *s)
  • 12. VCVC && BBBB 1212 Hàm đảo ngược chuỗi NMLT - Chuỗi ký tự Đảo ngược thứ tự các ký tự trong chuỗi (trừ ký tự kết thúc chuỗi) Địa chỉ chuỗi kết quả char s[] = “Tin hoc co so A!!!”; strrev(s); puts(s); // !!!A os oc coh niT char *strrev(char *s)char *strrev(char *s)
  • 13. VCVC && BBBB 1313 Hàm so sánh hai chuỗi NMLT - Chuỗi ký tự So sánh hai chuỗi s1 và s2 (phân biệt hoa thường) < 0 nếu s1 < s2 == 0 nếu s1 == s2 >0 nếu s1 > s2 char s1[] = “tin hoc co so A!!!”; char s2[] = “hoc tin co so A!!!”; int kq = strcmp(s1, s2); // => kq > 0 int strcmp(const char *s1, const char *s2)int strcmp(const char *s1, const char *s2)
  • 14. VCVC && BBBB 1414 Hàm so sánh hai chuỗi NMLT - Chuỗi ký tự So sánh hai chuỗi s1 và s2 (không phân biệt hoa thường) < 0 nếu s1 < s2 == 0 nếu s1 == s2 >0 nếu s1 > s2 char s1[] = “tin hoc co so A!!!”; char s2[] = “TIN HOC CO SO A!!!”; int kq = stricmp(s1, s2); // => kq == 0 int stricmp(const char *s1, const char *s2)int stricmp(const char *s1, const char *s2)
  • 15. VCVC && BBBB 1515 Hàm nối hai chuỗi NMLT - Chuỗi ký tự Nối chuỗi src vào sau chuỗi dest. ! Chuỗi dest phải đủ chứa kết quả Địa chỉ của chuỗi được nối char s1[100] = “Tin hoc”; char s2[] = “co so A!!!”; strcat(s1, “ ”); // => “Tin hoc ” strcat(s1, s2); // => “Tin hoc co so A!!!” char* strcat(char *dest, const char *src)char* strcat(char *dest, const char *src)
  • 16. VCVC && BBBB 1616 Hàm tính độ dài chuỗi NMLT - Chuỗi ký tự Tính độ dài chuỗi s size_t thay cho unsigned (trong <stddef.h>) dùng để đo các đại lượng không dấu. Độ dài chuỗi s char s[] = “Tin hoc co so A!!!”; int len = strlen(s); // => 18 size_t* strlen(const char *s)size_t* strlen(const char *s)
  • 17. VCVC && BBBB 1717 Hàm tìm chuỗi trong chuỗi NMLT - Chuỗi ký tự Tìm vị trí xuất hiện đầu tiên của s2 trong s1 Thành công: trả về con trỏ đến vị trí xuất hiện đầu tiên của s2 trong s1. Thất bại: trả về null char s1[] = “Tin hoc co so A!!!”; char s2[] = “hoc”; if (strstr(s1, s2) != null) printf(“Tim thay!”); char* strstr(const char *s1, const char *s2)char* strstr(const char *s1, const char *s2)
  • 18. VCVC && BBBB 1818 Bài tập Bài 1: Xem thêm một số hàm khác như  atoi, atol, atof : đổi chuỗi thành số  itoa, ltoa, ultoa: đổi số thành chuỗi  strtok Bài 2: Viết hàm upper(char s[]) đổi toàn bộ các ký tự sang ký tự hoa (giống hàm strupr) Bài 3: Viết hàm lower(char s[]) đổi toàn bộ các ký tự sang ký tự thường (giống hàm strlwr) Bài 4: Viết hàm proper(char s[]) đổi các ký tự đầu tiên của mỗi từ sang ký tự hoa. NMLT - Chuỗi ký tự
  • 19. VCVC && BBBB 1919 Bài tập Bài 5: Viết hàm standard(char s[]) bỏ toàn bộ khoảng trắng đầu chuỗi, cuối chuỗi và giữa 2 từ trong s chỉ còn 1 khoảng trắng. Bài 6: Xóa tất cả các khoảng trắng của s Bài 7: Đếm xem có bao nhiêu từ trong s. Xuất các từ trên các dòng liên tiếp. Bài 8: Tìm từ có chiều dài dài nhất và in ra. Bài 9: Trích ra n ký tự đầu tiên/cuối cùng/bắt đầu tại vị trí pos. NMLT - Chuỗi ký tự