phan 2 - chuong 8 (chuoi ky tu)

Upload: quoc-nguyen

Post on 11-Jul-2015

36 views

Category:

Documents


0 download

TRANSCRIPT

Lp trnh cn bn

Chng VIII:

CHUI K T

Hc xong chng ny, sinh vin s nm c cc vn sau: Khi nim v chui k t. Mt s hm x l chui v ng dng ca chng trong thc t.

I. KHI NIMChui k t l mt dy gm cc k t hoc mt mng cc k t c kt thc bng k t \0 (cn c gi l k t NULL trong bng m Ascii). Cc hng chui k t c t trong cp du nhy kp .

II. KHAI BOII.1 Khai bo theo mngC php: char [Chiu di ti a]

V d: Trong chng trnh, ta c khai bo: char Ten[12]; Trong khai bo ny, b nh s cung cp 12+1 bytes lu tr ni dung ca chui k t Ten; byte cui cng lu tr k t \0 chm dt chui.Ghi ch:

- Chiu di ti a ca bin chui l mt hng nguyn nm trong khong t 1 n 255 bytes. - Chiu di ti a khng nn khai bo tha trnh lng ph b nh, nhng cng khng nn khai bo thiu.

II.2 Khai bo theo con trC php: char *

V d: Trong chng trnh, ta c khai bo: char *Ten; Trong khai bo ny, b nh s dnh 2 byte lu tr a ch ca bin con tr Ten ang ch n, cha cung cp ni lu tr d liu. Mun c ch lu tr d liu, ta phi gi n hm malloc() hoc calloc() c trong alloc.h, sau mi gn d liu cho bin.

II.3 Va khai bo va gn gi trC php: char []=

V d:#include #include int main() { char Chuoi[]="Mau nang hay la mau mat em ;

Trang 92

Lp trnh cn bnprintf("Vua khai bao vua gan tr : %s,Chuoi) ; getch(); return 0; }

* Ghi ch: Chui c khai bo l mt mng cc k t nn cc thao tc trn mng c th p dng i vi chui k t.

III. CC THAO TC TRN CHUI K TIII.1. Nhp xut chuiIII.1.1 Nhp chui t bn phm nhp mt chui k t t bn phm, ta s dng hm gets()C php: gets()

char Ten[20]; gets(Ten); Ta cng c th s dng hm scanf() nhp d liu cho bin chui, tuy nhin lc ny ta ch c th nhp c mt chui khng c du khong trng. Ngoi ra, hm cgets() (trong conio.h) cng c s dng nhp chui. III.1.2 Xut chui ln mn hnh xut mt chui (biu thc chui) ln mn hnh, ta s dng hm puts().C php: puts()

V d:

V d: Nhp vo mt chui v hin th trn mn hnh chui va nhp.#include #include #include int main() { char Ten[12]; printf("Nhap chuoi: ");gets(Ten); printf("Chuoi vua nhap: ");puts(Ten); getch(); return 0; }

Ngoi ra, ta c th s dng hm printf(), cputs() (trong conio.h) hin th chui ln mn hnh.

III.2 Mt s hm x l chui (trong string.h)III.2.1 Cng chui - Hm strcat()C php: char *strcat(char *des, const char *source)

Hm ny c tc dng ghp chui ngun vo chui ch. V d: Nhp vo h lt v tn ca mt ngi, sau in c h v tn ca h ln mn hnh.#include #include #include

Trang 93

Lp trnh cn bnint main() { char HoLot[30], Ten[12]; printf("Nhap Ho Lot: ");gets(HoLot); printf("Nhap Ten: ");gets(Ten); strcat(HoLot,Ten); /* Ghep Ten vao HoLot*/ printf("Ho ten la: ");puts(HoLot); getch(); return 0; }

III.2.2 Xc nh di chui - Hm strlen()C php: int strlen(const char* s)

V d: S dng hm strlen xc nh di mt chui nhp t bn phm.#include #include #include int main(){ char Chuoi[255]; int Dodai; printf("Nhap chuoi: ");gets(Chuoi); Dodai = strlen(Chuoi) printf("Chuoi vua nhap: ");puts(Chuoi); printf(Co do dai %d,Dodai); getch(); return 0; }

III.2.3 i mt k t thng thnh k t hoa - Hm toupper() Hm toupper() (trong ctype.h) c dng chuyn i mt k t thng thnh k t hoa.C php: char toupper(char c)

III.2.4 i chui ch thng thnh chui ch hoa, hm strupr() Hm struppr() c dng chuyn i chui ch thng thnh chui ch hoa, kt qu tr v ca hm l mt con tr ch n a ch chui c chuyn i. C php: char *strupr(char *s) V d: Vit chng trnh nhp vo mt chui k t t bn phm. Sau s dng hm strupr() chuyn i chng thnh chui ch hoa.#include #include #include int main() { char Chuoi[255],*s; printf("Nhap chuoi: ");gets(Chuoi); s=strupr(Chuoi) ; printf(Chuoi chu hoa: );puts(s); getch(); return 0; }

Trang 94

Lp trnh cn bn

III.2.5 i chui ch hoa thnh chui ch thng, hm strlwr() Mun chuyn i chui ch hoa thnh chui ton ch thng, ta s dng hm strlwr(), cc tham s ca hm tng t nh hm strupr() C php: char *strlwr(char *s) III.2.6 Sao chp chui, hm strcpy() Hm ny c dng sao chp ton b ni dung ca chui ngun vo chui ch. C php: char *strcpy(char *Des, const char *Source) V d: Vit chng trnh cho php chp ton b chui ngun vo chui ch.#include #include #include int main() { char Chuoi[255],s[255]; printf("Nhap chuoi: ");gets(Chuoi); strcpy(s,Chuoi); printf(Chuoi dich: );puts(s); getch(); return 0; }

III.2.7 Sao chp mt phn chui, hm strncpy() Hm ny cho php chp n k t u tin ca chui ngun sang chui ch.C php: char *strncpy(char *Des, const char *Source, size_t n)

III.2.8 Trch mt phn chui, hm strchr() trch mt chui con ca mt chui k t bt u t mt k t c ch nh trong chui cho n ht chui, ta s dng hm strchr().C php : Ghi ch: char *strchr(const char *str, int c)

- Nu k t ch nh khng c trong chui, kt qu tr v l NULL. - Kt qu tr v ca hm l mt con tr, con tr ny ch n k t c c tm thy u tin trong chui str. III.2.9 Tm kim ni dung chui, hm strstr() Hm strstr() c s dng tm kim s xut hin u tin ca chui s2 trong chui s1. C php: char *strstr(const char *s1, const char *s2) Kt qu tr v ca hm l mt con tr ch n phn t u tin ca chui s1 c cha chui s2 hoc gi tr NULL nu chui s2 khng c trong chui s1. V d: Vit chng trnh s dng hm strstr() ly ra mt phn ca chui gc bt u t chui hoc.#include #include #include

Trang 95

Lp trnh cn bnint main() { char Chuoi[255],*s; printf("Nhap chuoi: ");gets(Chuoi); s=strstr(Chuoi,hoc); printf(Chuoi trich ra: );puts(s); getch(); return 0; }

III.2.10 So snh chui, hm strcmp() so snh hai chui theo tng k t trong bng m Ascii, ta c th s dng hm strcmp().C php: int strcmp(const char *s1, const char *s2)

Hai chui s1 v s2 c so snh vi nhau, kt qu tr v l mt s nguyn (s ny c c bng cch ly k t ca s1 tr k t ca s2 ti v tr u tin xy ra s khc nhau). - Nu kt qu l s m, chui s1 nh hn chui s2. - Nu kt qu l 0, hai chui bng nhau. - Nu kt qu l s dng, chui s1 ln hn chui s2. III.2.11 So snh chui, hm stricmp() Hm ny thc hin vic so snh trong n k t u tin ca 2 chui s1 v s2, gia ch thng v ch hoa khng phn bit.C php: int stricmp(const char *s1, const char *s2)

Kt qu tr v tng t nh kt qu tr v ca hm strcmp() III.2.12 Khi to chui, hm memset() Hm ny c s dng t n k t u tin ca chui l k t c.C php: memset(char *Des, int c, size_t n)

III.2.13 i t chui ra s, hm atoi(), atof(), atol() (trong stdlib.h) chuyn i chui ra s, ta s dng cc hm trn.C php : int atoi(const char *s) : chuyn chui thnh s nguyn

long atol(const char *s) : chuyn chui thnh s nguyn di float atof(const char *s) : chuyn chui thnh s thc Nu chuyn i khng thnh cng, kt qu tr v ca cc hm l 0. Ngoi ra, th vin string.h cn h tr cc hm x l chui khc, ta c th c thm trong phn tr gip.

Trang 96

Lp trnh cn bn

IV. BI TPIV.1 Mc ch yu cui su vo kiu d liu chui v cc php ton trn chui.

IV.2 Ni dung1. Vit chng trnh nhp mt chui k t t bn phm, xut ra mn hnh m Ascii ca tng k t c trong chui. 2. Vit chng trnh nhp mt chui k t t bn phm, xut ra mn hnh chui o ngc ca chui . V d o ca abcd egh l hge dcba. 3. Vit chng trnh nhp mt chui k t v kim tra xem chui c i xng khng. V d : Chui ABCDEDCBA l chui i xng. 4. Nhp vo mt chui bt k, hy m s ln xut hin ca mi loi k t. 5. Vit chng trnh nhp vo mt chui. - In ra mn hnh t bn tri nht v phn cn li ca chui. V d: Nguyn Vn Minh in ra thnh: Nguyn Vn Minh - In ra mn hnh t bn phi nht v phn cn li ca chui. V d: Nguyn Vn Minh in ra thnh: Minh Nguyn Vn 6. Vit chng trnh nhp vo mt chui ri xut chui ra mn hnh di dng mi t mt dng. V d: Nguyn Vn Minh In ra : Nguyn Vn Minh 7. Vit chng trnh nhp vo mt chui, in ra chui o ngc ca n theo tng t. V d : chui Nguyn Vn Minh o thnh Minh Vn Nguyn 8. Vit chng trnh i s tin t s thnh ch. 9. Vit chng trnh nhp vo h v tn ca mt ngi, ct b cc khong trng khng cn thit (nu c), tch tn ra khi h v tn, in tn ln mn hnh. Ch n trng hp c h v tn ch c mt t. 10. Vit chng trnh nhp vo h v tn ca mt ngi, ct b cc khong trng bn phi, tri v cc khong trng khng c ngha trong chui. In ra mn hnh ton b h tn ngi di dng ch hoa, ch thng. 11. Vit chng trnh nhp vo mt danh sch h v tn ca n ngi theo kiu ch thng, i cc ch ci u ca h, tn v ch lt ca mi ngi thnh ch hoa. In kt qu ln mn hnh.Trang 97

Lp trnh cn bn

12. Vit chng trnh nhp vo mt danh sch h v tn ca n ngi, tch tn tng ngi ra khi h v tn ri sp xp danh sch tn theo th t t in. In danh sch h v tn sau khi sp xp.

Trang 98