CHU'I K T* 2 Ni dung ch$%ng ny l Khi nim l Khai bo l Cc thao tc trn chu$i k t' 3 Khi ni,m l Chu$i k t' l m)t dy g*m cc k t' ho+c m)t m.ng cc k t' 0(1c k3t thc b5ng k t' \0 (k t' NULL trong b.ng m Ascii). l Cc h5ng chu$i k t' 0(1c 0+t trong c+p d6u nhy kp . 4 Khai bo l Khai bo theo m&ng l Khai bo theo con tr) l V*a khai bo v*a gn gi tr, 5 Khai bo theo m.ng l C php: char <Bi.n> [Chi1u di t2i 3a]; l V d4: char Ten[12]; => b) nh7 s9 cung c6p 12+1 bytes 0; l(u tr= n)i dung c>a chu$i k t' Ten; byte cu@i cng l(u tr= k t' \0 0; ch6m dAt chu$i l Ghi ch: l ChiBu di t@i 0a c>a bi3n chu$i: 1..255 bytes. l Khng nn khai bo thCa 0; trnh lng ph b) nh7. \0 Ten: Ten[0] Ten[12] 6 Khai bo theo con trE l C php: char *<Bi.n>; l V d4: char *Ten; l Trong khai bo ny, b) nh7 s9 dnh 2 byte 0; l(u tr= 0Fa chH c>a bi3n con trE Ten 0ang chH 03n. l Ch(a cung c6p n2i 0; l(u tr= d= liu. l Mu@n c ch$ 0; l(u tr= d= liu, ta ph.i gJi 03n hm malloc() ho+c calloc() c trong alloc.h, sau 0 m7i gn d= liu cho bi3n. Tieu Dong Tu 7 VCa khai bo vCa gn gi trF l C php: char <Bi.n>[]=<H6ng chu8i>; l V d4: l Ghi ch: Chu$i 0(1c khai bo l m)t m.ng cc k t' nn cc thao tc trn m.ng c th; p dKng 0@i v7i chu$i k t'. Vua khai bao vua gan tr : Mau nang hay la mau mat em 8 Cc thao tc trn chu8i k t: l Nh;p xu<t chu8i l Nhp chu$i t' bn phm l Xu*t chu$i ln mn hnh l Mt s2 hm x= l chu8i (trong string.h) 9 Nhp chu$i t' bn phm l Dng hm gets() l C php: gets(<Bi.n chu8i>) l V dK: char Ten[20]; gets(Ten); l Ta cLng c th; sM dKng hm scanf() 0; nhNp d= liu cho bi3n chu$i, tuy nhin lc ny ta chH c th; nhNp 0(1c m)t chu$i khng c d6u kho.ng trOng. l Dng hm cgets() (trong conio.h) 10 Xu*t chu$i ln mn hnh l P; xu6t m)t chu$i (bi;u thAc chu$i) ln mn hnh, ta sM dKng hm puts(). l C php: puts(<Bi>u th@c chu8i>) l V d4: NhNp vo m)t chu$i v hi;n thF trn mn hnh chu$i vCa nhNp: l Ngoi ra, ta c th; sM dKng hm printf(), cputs() (trong conio.h) 0; hi;n thF chu$i ln mn hnh. 11 M)t s@ hm xM l chu$i (trong string.h) l C,ng chu$i - Hm strcat() l Xc -.nh -, di chu$i - Hm strlen() l 02i m,t k t4 th(5ng thnh k t4 hoa - Hm toupper() l 02i chu$i ch7 th(5ng thnh chu$i ch7 hoa, hm strupr() l 02i chu$i ch7 hoa thnh chu$i ch7 th(5ng, hm strlwr() l Sao chp m,t ph9n chu$i, hm strncpy() l Trch m,t ph9n chu$i, hm strchr() l Tm ki:m n,i dung chu$i, hm strstr() l So snh chu$i, hm strcmp() l So snh chu$i, hm stricmp() l Kh<i t>o chu$i, hm memset() l 02i t' chu$i ra s?, hm atoi(), atof(), atol() (trong stdlib.h) 12 C,ng chu$i - strcat() (1) l C php: char *strcat(char *des, const char *source) l Hm ny c tc dKng ghp chu$i ngu*n (source) vo chu$i 0ch (des). l Tr. v; con trE chH 03n chu$i k3t qu.. 13 C,ng chu$i - strcat() (2) l V d-: NhNp vo hJ lt v tn c>a m)t ng(Qi, sau 0 in c. hJ v tn c>a hJ ln mn hnh. 14 Xc /0nh /, di chu$i - strlen() l C php: int strlen(const char* s) l V d-: Xc 0Fnh 0) di 1 chu$i nhNp tC bn phm. 15 23i m,t k t5 th(6ng thnh k t5 hoa - toupper() l C php: char toupper(char c) l Hm ny (trong ctype.h) 0(1c dng 0; chuy;n 0Ri 1 k t' th(Qng thnh k t' hoa. 16 23i chu$i ch8 th(6ng thnh chu$i ch8 hoa - strupr() (1) l C php: char *strupr(char *s) l Hm ny 0(1c dng 0; chuy;n 0Ri chu$i ch= th(Qng thnh chu$i ch= hoa. l K3t qu. tr. vB l 1 con trE chH 03n chu$i k3t qu.. 17 23i chu$i ch8 th(6ng thnh chu$i ch8 hoa - strupr() (2) l V d-: NhNp vo m)t chu$i k t' tC bn phm. Sau 0 sM dKng hm strupr() 0; chuy;n 0Ri chng thnh chu$i ch= hoa. 18 23i chu$i ch8 hoa thnh chu$i ch8 th(6ng - strlwr() l C php: char *strlwr(char *s) l Hm ny 0(1c dng 0; chuy;n 0Ri chu$i ch= hoa thnh chu$i ch= th(Qng. l K3t qu. tr. vB l 1 con trE chH 03n chu$i k3t qu.. 19 Sao chp chu$i - strcpy() (1) l C php: char *strcpy(char *Des, const char *Source) l Hm ny 0(1c dng 0; sao chp ton b) n)i dung c>a chu$i ngu*n vo chu$i 0ch. 20 Sao chp chu$i - strcpy() (2) l V d-: Vi3t ch(2ng trnh cho php chp ton b) chu$i ngu*n vo chu$i 0ch 21 Sao chp m,t ph:n chu$i - strncpy() vTrch m,t ph:n chu$i - strchr() l Sao chp m,t ph9n chu$i l C php: char *strncpy(char *Des, const char *Source, size_t n) l Chp n k t' 0Su tin c>a chu$i ngu*n sang chu$i 0ch. l Trch m,t ph9n chu$i, hm strchr() l C php : char *strchr(const char *str, int c) l Trch ra chu$i con c>a str bOt 0Su tC k t' c cho 03n h3t chu$i. l Ghi ch: l N3u k t' c khng c trong chu$i, k3t qu. tr. vB l NULL. l K3t qu. tr. vB c>a hm l m)t con trE, con trE ny chH 03n k t' c 0Su tin trong chu$i str. 22 Tm ki;m n,i dung chu$i - strstr() (1) l C php: char *strstr(const char *s1, const char *s2) l Hm ny 0(1c dng 0; tm ki3m s' xu6t hin 0Su tin c>a chu$i s2 trong chu$i s1. l K3t qu. tr. l 1 con trE chH 03n phSn tM 0Su tin c>a chu$i s1 c chAa chu$i s2 ho+c gi trF NULL n3u chu$i s2 khng c trong chu$i s1. 23 Tm ki;m n,i dung chu$i - strstr() (2) l V d@: Vi3t ch(2ng trnh sM dKng hm strstr() 0; l6y ra m)t phSn c>a chu$i g@c bOt 0Su tC chu$i hoc. 24 So snh chu$i - strcmp() (1) l C php: int strcmp(const char *s1, const char *s2) l So snh 2 chui s1 v s2 v7i nhau. l K$t qu' tr' v* l 1 s, int: l <0 n3u s1 < s2 l ==0 n3u s1==s2 l >0 n3u s1 > s2 l T(2ng t': int stricmp(const char *s1, const char *s2) l So snh khng phn bit k t' hoa/th(Qng 25 So snh chu$i - strcmp() (2) l V d-: #include <conio.h> #include <stdio.h> #inlude <string.h> void main(){ char s1[10]=Chao, s2[10]=chao; printf(%d,strcmp(s1,s2)); getch(); } -32 #include <conio.h> #include <stdio.h> #inlude <string.h> void main(){ char s1[10]=chao, s2[10]=chao; printf(%d,strcmp(s1,s2)); getch(); } 0 26 Kh=i t?o chu$i - memset() l C php: void *memset(char *Des, int c, size_t n) l P+t n k t' 0Su tin c>a chu$i Des l k t' c. l Gi trF tr. vB: chu$i Des. l N5m trong th( vin: string.h v mem.h 27 23i t' chu$i ra s@ - atoi(), atof(), atol() (trong stdlib.h) l C php : int atoi(const char *s) : chuy;n chu$i thnh s@ nguyn long atol(const char *s) : chuy;n chu$i thnh s@ nguyn di float atof(const char *s) : chuy;n chu$i thnh s@ th'c l N3u chuy;n 0Ri khng thnh cng, k3t qu. tr. vB c>a cc hm l 0. l V d4: atoi(1234)=> 1234 28 H/t ch12ng