Tham khảo tài liệu ''kỹ thuật lập trình c chuyên nghiệp phần 6'', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Lỗi tạo t ột chuỗi h ỗi Chú ý: khơng có phép gán kiểu liệu chuỗi h saii char ten[10]; ten = “hoahong “hoahong”; ”; Chú ý Khô : Khơng sử dụng tốn tử gán = để chép nội dung chuỗi sang chuỗi khác khác char a[4]=“hi”; char b[4]; b = a; //??? Không Không: h : dùng toán tử == để so sánh nội dung hai chuỗi char a[] = “hi”; hi ; char b[] = “there”; if(a==b) ( ) //??? {} C trỏ Con t ỏ chuỗi h ỗi ký tự t char h *p * ; // khai *p; kh i báo bá chuỗi h ỗi ký tự t h ột trỏ tỏ p = new char[ char[30 30]]; //xin //xin cấp phát số lượng ký tự tự,, // giống iố mảng ả ký tự Mảng Mả chuỗi: h ỗi char h *[] char h *words * *words[ d [ ] = {“ {“hhong”, {“hong h ” “cuc ”, cuc”, ” “lan ”, l ”, lan”, ” “nhai”,”mo nhai”,”mo”} h i” ” ”}; ”}; Words Words[0] h o n g \0 c u c Hay char **words; Words[1] \0 l a Words[2] n \0 n Words[3] h a Words[4] i \0 m o \0 Ch ỗi ký ttự – Một Chuỗi Mộ số ố hà hàm thư h viện iệ Lấy độ dài chuỗi l = strlen strlen(s) (s); ( ); ); Đổi toàn ký tự chuỗi thành IN HOA strupr(s) strupr (s); ; Đổi toàn ký tự chuỗi thành in thường strlwr(s) strlwr t l (s); ( ); Ch ỗi ký ttự – Một Chuỗi Mộ số ố hà hàm thư h viện iệ So sánh chuỗi chuỗi:: so sánh theo thứ tự từ điển Phân biệt IN HOA – in thường thường:: int strcmp strcmp(const (const char *s *s1 s1, const char *s *s2 s2); Không phân biệt IN HOA – in thường thường:: int stricmp stricmp(const (const char *s *s1 1, const char *s *s2 2); Ch ỗi ký ttự – víí dụ Chuỗi d strcmp # #include #include Minor < Tony int main() { char s1[] = "Minor"; char s2[] = "Tony"; int cmp = strcmp(s1, s2); if (cmp < 0) printf("%s i f("% < % %s", " s1, s2); 2) else if (cmp == 0) printf("%s = %s", s1, s2); else printf("%s p ( > %s", , s1, , s2); ) return 0; } Ch ỗi ký ttự – Một Chuỗi Mộ số ố hà hàm thư h viện iệ Gán nội dung chuỗi: chuỗi: o Chép p toàn ộ chuỗi source sang g chuỗi dest dest:: int strcpy strcpy(char (char *dest, const char *src) *src); ; o Chép tối đa n ký tự từ source sang dest dest:: py( py (char *dest, ( , int strncpy(char strncpy const char *src, int n) n); ; Tạo chuỗi từ chuỗi có: có: char *strdup strdup(const (const char *src) *src); src); src) ; Ch ỗi ký ttự – víí dụ Chuỗi d strcpy # #include #include int main() { char s[] = "Tony Blurt"; char s2[100] s2[100], *s3; strcpy(s2, s); printf("%s\n", i f("% \ " s2); 2) strncpy(s2 + 2, "12345", 3); printf("%s\n", s2); s3 = strdup(s + 5); printf("%s\n", s3); ( ) free(s3); return 0; } Tony y Blurt To123Blurt Blurt Ch ỗi ký ttự – Một Chuỗi Mộ số ố hà hàm thư h viện iệ Nối chuỗi: chuỗi: char *strcat strcat(char (char *dest, const char *src) *src); ; Tách chuỗi: chuỗi: char *strtok strtok(char (char *s, ( , const char *sep) *sep); ; Trả địa đoạn tiên Muốn tách đoạn tham số thứ NULL Ch ỗi ký ttự – víí dụ Chuỗi d strtok 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: 123 45 Ch ỗi ký ttự – Một Chuỗi Mộ số ố hà hàm thư h viện iệ Tìm ký tự chuỗi: chuỗi: char *strchr strchr(const (const char *s, int c) c); ; Tìm đoạn ký tự chuỗi: chuỗi: char *strstr strstr(const (const char *s ( *s1 1, const char *s *s2 2); Ch ỗi ký ttự – víí dụ Chuỗi d tìm ì kiếm kiế #include #include int main() { char s[]= [] "Thu tim kiem chuoi"; ; char *p; p = strchr(s, strchr(s 'm'); m ); printf("%s\n", p); p = strstr(s, "em"); printf("%s\n" p); printf("%s\n", return 0; } m kiem chuoi em chuoi Ch ỗi ký ttự – chèn Chuỗi hè ộ đđoạn ký tự # #include #include void StrIns(char *s s, char *sub) sub) { int len = strlen(sub); memmove(s + len, len s, s strlen(s)+1); strncpy(s, sub, len); 123 Thu chen } 123 Thu 45chen i int main() i () { char s[]= “ Thu chen"; StrIns(s, "123"); ( + 8, , "45"); ) StrIns(s return 0; } printf("%s\n", s); printf("%s\n", p ( , p) p); Ch ỗi ký ttự – xóa Chuỗi ó ộ đoạn đ ký tự # #include #include void StrDel(char *s s, int n) { memmove(s, s + n, strlen(s+n)+1); xoa 12345 } int main() xoa 45 { char h s[]= [] " "Thu h xoa 12345"; 12345" StrDel(s, 4); StrDel(s + 4, 3); return 0; } printf("%s\n", s); printf("%s\n", s); Biế Biến đổi chuỗi h ỗi sang số ố atoi(), atof atoi(), atof(), (), atol(): atol(): đổi chuỗi ký tự sang số số iintt atoi atoi(const t i( i(const ( t char h *s); *) double atof(const atof(const char *s); long atol atol(const (const char *s); s); float f; char **str str = "12345.67"; f = atof( atof(str); str); printf("string printf( printf (("string string = %s float = %f\ %f\nn", str str,, f); ... strncpy const char *src, int n) n); ; Tạo chuỗi từ chuỗi c? ?: c? ?: char *strdup strdup(const (const char *src) *src); src); src) ; Ch ỗi ký ttự – víí dụ Chuỗi d strcpy # #include #include ... Blurt Ch ỗi ký ttự – Một Chuỗi Mộ số ố hà hàm thư h viện iệ Nối chuỗi: chuỗi: char *strcat strcat(char (char *dest, const char *src) *src); ; Tách chuỗi: chuỗi: char *strtok strtok(char (char... Tìm ký tự chuỗi: chuỗi: char *strchr strchr(const (const char *s, int c) c) ; ; Tìm đoạn ký tự chuỗi: chuỗi: char *strstr strstr(const (const char *s ( *s1 1, const char *s *s2 2); Ch ỗi ký ttự