kỹ thuật lập trình C chuyên nghiệp phần 6 potx

16 227 0
kỹ thuật lập trình C chuyên nghiệp phần 6 potx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Lỗi khi t ộthỗiLỗi khi t ộthỗi Lỗi khi t ạo m ột c h u ỗiLỗi khi t ạo m ột c h u ỗi  ChúChú ý: ý: khôngkhông cócó phépphép gángán trongtrong kiểukiểudữdữ liệuliệuchuỗichuỗi hh thếthế àà làlà ii  n hư n hư thếthế n à yn à y làlà sa i sa i char ten[10];char ten[10]; char ten[10];char ten[10]; ten = “ten = “hoahonghoahong”;”; Chú ýChú ý Chú ýChú ý KhôKhô  Khô ng Khô ng :: sửsử dụngdụng toántoán tửtử gángán = = đểđể chépchép nộinội dung dung củacủamộtmộtchuỗichuỗi sangsang chuỗichuỗi kháckhác sang sang chuỗichuỗi kháckhác char a[4]=“hi”;char a[4]=“hi”; char b[4];char b[4]; b = a; //???b = a; //??? hh  K h ôngK h ông:: dùngdùng toántoán tửtử == == đểđể so so sánhsánh nộinội dung dung haihai chuỗichuỗi char a[] = “ hi ” ;char a[] = “ hi ” ; char a[] = hi ;char a[] = hi ; char b[] = “there”;char b[] = “there”; if ( a==b ) //???if ( a==b ) //??? ()() { }{ } CC t ỏt ỏ àà h ỗih ỗi kýký tt C on C on t r ỏt r ỏ v à v à c h u ỗi c h u ỗi kýký t ự t ự hh ** //// kh ikh i bábá h ỗih ỗi kýký tt hh ộtột t ỏt ỏ  c h arc h ar * p * p;; //// kh a ikh a i bá o bá oc h u ỗi c h u ỗi kýký tựtự n hư n hư m ột m ột concon t r ỏt r ỏ  pp==newnew char[char[3030]];;////xinxin cấpcấp phátphát sốsố lượnglượng kýký tựtự,, //// iốiố ảả áá kýký //// g iố ngg iố ng m ả ngm ả ng c á cc á c kýký t ự t ự Mả áhỗih *[]Mả áhỗih *[] Mả ng c á c c h u ỗi : c h ar * [ ]Mả ng c á c c h u ỗi : c h ar * [ ] hh *d*d [[ ]] {“{“ hh ”” ““ ”” ““ ll ”” ““ hi””hi”” ”}”}  c h arc h ar * wor d s * wor d s [[ ]] == {“{“ h ong h ong ” , ” , ““ cuccuc ” , ” , ““ l an l an ” , ” , ““ n h a i” , ” mon h a i” , ” mo ”}”} ;; WordsWords Words[0]Words[0] Words[1]Words[1] Words[2]Words[2] Words[3]Words[3] Words[4]Words[4] hh oo nn gg \\00 cc uu cc \\00 ll aa nn \\00 nn hh aa ii \\00 mm oo \\00 Hay char **words;Hay char **words; Ch ỗikýtCh ỗikýt Mộ ố hà h iệMộ ố hà h iệ Ch u ỗi ký t ự Ch u ỗi ký t ự –– Mộ t s ố hà m t h ư v iệ n Mộ t s ố hà m t h ư v iệ n  LấyLấy độđộ dàidài chuỗichuỗi ll== strlenstrlen ( s )( s ) ;; ()() ;;  ĐổiĐổi toàntoàn bộbộ cáccác kýký tựtự củacủachuỗichuỗi thànhthành ININ HOAHOA struprstrupr (s)(s) ;; struprstrupr (s)(s) ;;  ĐổiĐổi toàntoàn bộbộ cáccác kýký tựtự củacủachuỗichuỗi thànhthành inin thườngthường tltl ()() s t r l wrs t r l wr ( s )( s ) ;; Ch ỗikýtCh ỗikýt Mộ ố hà h iệMộ ố hà h iệ Ch u ỗi ký t ự Ch u ỗi ký t ự –– Mộ t s ố hà m t h ư v iệ n Mộ t s ố hà m t h ư v iệ n  SoSo sánhsánh chuỗichuỗi::soso sánhsánh theotheo thứthứ tựtự từtừđiểnđiển PhânPhân biệtbiệtININ HOAHOA ––inin thườngthường:: intint strcmpstrcmp (const(const charchar * s * s 11 ,, constconst charchar * s * s 22 )) ;; intint strcmpstrcmp (const(const charchar ss 11 ,, constconst charchar ss 22 )) ;; KhôngKhông phânphân biệtbiệt ININ HOAHOA –– inin thườngthường :: KhôngKhông phânphân biệtbiệt ININ HOAHOA –– inin thườngthường :: intint stricmpstricmp(const(const charchar *s*s11,, constconst charchar *s*s22));; Ch ỗikýtCh ỗikýt ídíd # include <stdio.h> Ch u ỗi ký t ự Ch u ỗi ký t ự –– v í d ụ v í d ụ strcmpstrcmp # #include <string.h> int main() Minor < Tony int main() { char s1[] = "Minor"; char s2[] = "Tony"; char s2[] = "Tony"; int cmp = strcmp(s1, s2); if (cmp < 0) if ("% % " 1 2) pr i nt f ("% s < % s " , s 1 , s 2) ; else if (cmp == 0) printf("%s = %s", s1, s2); else p rintf ( "%s > %s" , s1 , s2 ) ; p ( ,,) return 0; } Ch ỗikýtCh ỗikýt Mộ ố hà h iệMộ ố hà h iệ Ch u ỗi ký t ự Ch u ỗi ký t ự –– Mộ t s ố hà m t h ư v iệ n Mộ t s ố hà m t h ư v iệ n  GánGán nộinội dungdung chuỗichuỗi:: oo Ché p Ché p toàntoàn b ộ b ộ chuỗichuỗi sourcesource san g san g chuỗichuỗi destdest:: pp ộộ gg intint strcpystrcpy(char(char *dest,*dest, constconst charchar *src)*src);; oo ChépChép tốitối đađannkýký tựtự từtừ sourcesource sangsang destdest:: intint strnc py strnc py ( char ( char *dest , *dest , pypy (( ,, constconst charchar *src,*src, intint n)n);;  TạoTạochuỗichuỗimớimớitừtừ chuỗichuỗi đãđãcócó:: charchar ** strdupstrdup (const(const charchar * src) * src) ;; charchar strdupstrdup (const(const charchar src)src) ;; Ch ỗikýtCh ỗikýt ídíd # include <stdio.h> Ch u ỗi ký t ự Ch u ỗi ký t ự –– v í d ụ v í d ụ strcpystrcpy # #include <string.h> int main() Ton y Blurt int main() { char s[] = "Tony Blurt"; char s2[100] *s3; y To123Blurt Blurt char s2[100] , *s3; strcpy(s2, s); if ("% \ "2) pr i nt f ("% s \ n " , s 2) ; strncpy(s2 + 2, "12345", 3); printf("%s\n", s2); s3 = strdup(s + 5); printf("%s\n", s3); free ( s3 ) ; () return 0; } Ch ỗikýtCh ỗikýt Mộ ố hà h iệMộ ố hà h iệ Ch u ỗi ký t ự Ch u ỗi ký t ự –– Mộ t s ố hà m t h ư v iệ n Mộ t s ố hà m t h ư v iệ n  NốiNốichuỗichuỗi:: charchar **strcatstrcat(char(char *dest,*dest, constconst charchar *src)*src);;  TáchTách chuỗichuỗi:: charchar **strtokstrtok ( char ( char *s , *s , (( ,, constconst charchar *sep)*sep);; TrảTrả vềvề địađịa chỉchỉ củacủa đoạnđoạn đầuđầu tiêntiên MuốnMuốn táchtách đoạnđoạn kếkế tiếptiếp TrảTrả vềvề địađịa chỉchỉ củacủa đoạnđoạn đầuđầu tiêntiên MuốnMuốn táchtách đoạnđoạn kếkế tiếptiếp thamtham sốsố thứthứ nhấtnhấtsẽsẽ làlà NULLNULL [...]... int c) ; strchr(const c) ; Tìm một đoạn ký tự trên chuỗi: chuỗi: char *strstr(const char *s1, strstr(const ( *s1 const char *s2); *s2 Chuỗi Ch ỗi ký t – ví dụ tìm kiếm tự í d ì kiế #include #include int main() { char s[]= "Thu tim kiem chuoi"; [] ; char *p; p = strchr(s 'm'); strchr(s, m ); printf("%s\n", p); p = strstr(s, "em"); printf("%s\n", printf("%s\n" p); return 0; } m kiem chuoi...Chuỗi Ch ỗi ký t – ví dụ strtok tự í d k # #include #include #define SEPARATOR "., " int main() { char s[]= "Thu strtok: 9,123.45"; char *p; p = strtok(s, SEPARATOR); while (p != NULL) { printf("%s\n", p); p = strtok(NULL, SEPARATOR); } return 0; } Thu strtok: 9 123 45 Chuỗi Ch ỗi ký t – Mộ số hà thư viện tự Một ố hàm h iệ Tìm một ký tự trên chuỗi: chuỗi: char *strchr(const char... em chuoi Chuỗi Ch ỗi ký t – chèn một đ ký tự tự hè ộ đoạn # #include #include void StrIns(char *s char *sub) s, sub) { int len = strlen(sub); memmove(s + len s strlen(s)+1); len, s, strncpy(s, sub, len); 123 Thu chen } 123 Thu 45chen int main() i i () { char s[]= “ Thu chen"; StrIns(s, "123"); ( , ) StrIns(s + 8, "45"); return 0; } printf("%s\n", s); p printf("%s\n", p) ( , p); Chuỗi... s); Biế đổi chuỗi sang số Biến h ỗi ố atoi(), atof(), atol(): atoi(), atof(), atol(): đổi chuỗi ký tự sang số số int atoi(const char *s); i t atoi( t i(const h * ) i( t double atof(const char *s); atof(const long atol(const char *s); atol(const s); float f; char *str = "12345 .67 "; *str f = atof(str); atof(str); printf( printf("string printf( string = %s float = %f\n", str, f); ("string %f\n str, ... Chuỗi Ch ỗi ký t – xóa một đ ký tự tự ó ộ đoạn # #include #include void StrDel(char *s int n) s, { memmove(s, s + n, strlen(s+n)+1); xoa 12345 } int main() xoa 45 { char s[]= " h xoa 12345" h [] "Thu 12345"; StrDel(s, 4); StrDel(s + 4, 3); return 0; } printf("%s\n", s); printf("%s\n", s); Biế đổi chuỗi sang số Biến h ỗi ố atoi(), atof(), atol(): atoi(), atof(), atol(): đổi chuỗi . đãđ c c :: charchar ** strdupstrdup (const(const charchar * src) * src) ;; charchar strdupstrdup (const(const charchar src)src) ;; Ch ỗikýtCh ỗikýt ídíd # include <stdio.h> Ch u ỗi ký t ự Ch u ỗi . chuỗichuỗi:: oo Ché p Ché p toàntoàn b ộ b ộ chuỗichuỗi sourcesource san g san g chuỗichuỗi destdest:: pp ộộ gg intint strcpystrcpy(char(char *dest,*dest, constconst charchar *src)*src);; oo ChépChép tốitối. sourcesource sangsang destdest:: intint strnc py strnc py ( char ( char *dest , *dest , pypy (( ,, constconst charchar *src,*src, intint n)n);;  TạoTạochuỗichuỗimớimớitừtừ chuỗichuỗi đãđ c c :: charchar ** strdupstrdup (const(const charchar * src) * src) ;; charchar strdupstrdup (const(const charchar src)src) ;; Ch

Ngày đăng: 22/07/2014, 16:21

Tài liệu cùng người dùng

Tài liệu liên quan