[Wiki] Các Hàm Xử Lý Chuỗi Thông Dụng Trong C/C++ - Dạy Nhau Học Trang chủ » Cách Copy Chuỗi Trong C++ » [Wiki] Các Hàm Xử Lý Chuỗi Thông Dụng Trong C/C++ - Dạy Nhau Học Có thể bạn quan tâm Cách Copy Chữ Trên ảnh Của Ios 15 Cách Copy Chữ Trong File Pdf Không Bị Lỗi Font Cách Copy Chữ Trong Photoshop Cs6 Cách Copy Chữ Trong Powerpoint Sang Word Cách Copy Chữ Từ ảnh Sang Word [Wiki] Các hàm xử lý chuỗi thông dụng trong C/C++ share writes c c++ quanpham (passion) December 29, 2016, 6:10am #1 Mình xin thảo luận về công dụng của các hàm thường sử dụng trong chuỗi: Chú ý khi sử dụng các hàm này ta phải khai báo thư viện #include "string.h" 1.Hàm strcpy: Công dụng: sao chép chuỗi nguồn vào chuỗi đích. Cấu trúc: char*strcpy(char *dich, char *nguon); Có nghĩa là khi ta nhập vào một dãy các kí tự ở chuỗi nguồn thì nó sẽ sao chép tất cả các kí tự vừa nhập vào cái chuỗi đích. ví dụ như sau: #include<conio.h> #include<stdio.h> #include<string.h> int main() { char A[255],B[255]; printf("Nhap chuoi: "); gets(A); strcpy(B,A); printf("Chuoi dich: "); puts(B); getch(); return 0; } Chương trình trên khi ta nhập vào mảng A một dãy các kí tự là “abc” thì khi gap hàm strcpy(B,A); thì nó sẽ copy 3 kí tự “abc” từ mảng A vào mảng B. Nếu chúng ta muốn copy n kí tự từ chuỗi nguồn vào chuỗi đích ta dùng hàm sau: 2.Hàm strncpy: Công dụng: sao chép n kí tự đầu tiên của chuỗi nguồn vào chuỗi đích. Cấu trúc: char *strncpy(char *dich, char *nguon,int n); 3.Hàm strlen: Công dụng :cho biết độ dài của chuỗi s Cấu trúc: int strlen(char *s) Ví dụ: Sử dụng hàm strlen xác định độ dài một chuỗi nhập từ bàn phím. #include<conio.h> #include<stdio.h> #include<string.h> 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; } 4.Hàm strcat: Công dụng: ghép chuỗi nguồn vào sau chuỗi đích. Cấu trúc: char *strcat(char *dich,char *nguon) Ví dụ: Nhập vào họ lót và tên của một người, sau đó in cả họ và tên của họ lên màn hình. #include<conio.h> #include<stdio.h> #include<string.h> int 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; } 5.Hàm strncat: Công dụng: ghép n kí tự đầu tiên của chuỗi vào sau chuỗi đích Cấu trúc: char *strncat(char *dich,char *nguon,int n); 6.Hàm strcmp: Công dụng: so sánh 2 chuỗi s1 và s2 Cấu trúc: int strcmp(char *s1,char *s2); Hàm sẽ trả về 1 trong các giá trị sau: Giá trị âm nếu chuỗi s1 nhỏ hơn chuỗi s2 Giá trị 0 nếu hai chuỗi bằng nhau Giá trị dương nếu chuỗi s1 lớn hơn chuỗi s2 Ví dụ: char *chu1 = "aaa", *chu2= "bbb", *chu3 = "aaa"; strcmp(chu1, chu2); //kết quả trả về - 1 strcmp(chu1, chu3); //kết quả trả về 0 strcmp(chu2, chu3); //kết quả trả về 1 ví dụ minh họa đây: /* Nhap danh sach ten va sap xep theo thu tu tang dan*/ #include <stdio.h> #include <conio.h> #include <string.h> #define MAXNUM 5 #define MAXLEN 10 int main(void) { char ten[MAXNUM][MAXLEN]; //mang chuoi char *c[MAXNUM]; //mang con tro tro den chuoi char *ct; int i, j, n = 0; //nhap danh sach ten while (n < MAXNUM) { printf("Nhap vao ten nguoi thu %d: ",n + 1); gets(ten[n]); c[n++] = ten[n]; //con tro den ten } //sap xep danh sach theo thu tu tang dan for (i = 0; i < n - 1; i ++) for (j = i + 1; j < n; j ++) if (strcmp(c[i], c[j]) > 0) { ct = c[i]; c[i] = c[j]; c[j] = ct; } //In danh sach da sap xep printf("Danh sach sau khi sap xep:\n"); for (i = 0; i < n; i ++) printf("Ten nguoi thu %d : %s\n", i + 1, c[i]); getch(); } 7.Hàm strlwr: Công dụng: chuyển tất cả các kí tự chuỗi về chữ thường Cấu trúc: char *strlwr(char *s); 8.Hàm strupr : Công dụng: chuyển tất cả các kí tự chuỗi thường về chữ hoa Cấu trúc: char *strupr(char *s) Ví dụ: Viết chương trình nhập vào một chuỗi ký tự từ bàn phím. Sau đó sử dụng hàm strupr(); để chuyển đổi chúng thành chuỗi chữ hoa. #include<conio.h> #include<stdio.h> #include<string.h> int main() { char Chuoi[255],*s; printf("Nhap chuoi: "); gets(Chuoi); s=strupr(Chuoi) ; printf("Chuoi chu hoa:"); puts(s); getch(); return 0; } 9.Hàm strrev : Công dụng: đảo ngược chuỗi kí tự Cấu trúc: char *strrev(char *s); 10.Hàm strchr: Công dụng: trả về địa chỉ vị trí xuất hiện đầu tiên của kí tự ch trong chữ s và sẽ trả về giá trị NULL trong trường hợp không tìm thấy. Cấu trúc: char *strchr(char *s,int ch); 11.Hàm strrchr: Cấu trúc: char *strrchr(char *s,char ch); Công dụng: trả về địachỉ vị trí xuất hiện cuối cùng của kí tự ch trong chuỗi s. Nếu không tìm thấy hàm sẽ trả về giá trị NULL 12.Hàm strstr: Công dụng: trả về địa chỉ vị trí xuất hiện đầu tiên của chuỗi s1 trong chuỗi s và sẽ trả về giá trị NULL trong trường hợp không tìm thấy. Cấu trúc: char *strstr(char *s, char *s1); Ví dụ: Viết chương trình sử dụng hàm strstr() để lấy ra một phần của chuỗi gốc bắt đầu từ chuỗi “hoc”. #include<conio.h> #include<stdio.h> #include<string.h> int main() { char Chuoi[255],*s; printf("Nhap chuoi: "); gets(Chuoi); s=strstr(Chuoi,"hoc"); printf("Chuoi trich ra:"); puts(s); getch(); return 0; } 13. Hàm memset Công dụng: Set num byte nhớ từ vị trí được trỏ tới bằng giá trị value Cấu trúc: void *memset (void *ptr, int value, size_t num); 14. Hàm memcpy Công dụng: Chép num byte từ vị trí mà source trỏ tới đến vị trí mà destination trỏ tới Cấu trúc: void *memcpy (void *destination, const void *source, size_t num); 15. Hàm memcmp Công dụng: So sánh giá trị các vùng nhớ mà ptr1 và ptr2 trỏ tới theo từng byte, sẽ dừng lại khi so sánh đủ num byte. Trả về -1 khi byte đầu tiên mà không trùng nhau của 2 vùng so sánh của ptr1 nhỏ hơn ptr2, trả về 0 khi 2 vùng nhớ bằng nhau, trả về 1 khi byte đầu tiên mà không trùng nhau của 2 vùng so sánh của ptr1 lớn hơn ptr2 Cấu trúc: int memcmp(const void *ptr1, const void *ptr2, size_t num); 16.Hàm stricmp: Công dụng : So sánh 2 chuỗi không phân biệt chữ hoa chữ thường , hàm trả về tương tự strcmp. Cấu trúc : int stricmp (const char * string1, const char * string2); Ví dụ: Ví dụ này sử dụng stricmp () để so sánh hai chuỗi. #include <stdio.h> #include <string.h> int main (void) { / * So sánh hai chuỗi như là chữ thường * / if (0 == stricmp ( "hello", "Hello")) if (0 == stricmp("hello", "HELLO")) printf("The strings are equivalent.\n"); else printf("The strings are not equivalent.\n"); return 0; } The output: " The strings are equivalent." Có gì sai sót mọi người xin đóng góp ý kiến nhá bấm vào cây bút Wiki để sửa nhé 35 Likes Hỏi về sự khác nhau của string và mảng char và nên dùng cái nào? Tuyển tất cả mọi người cùng tham gia làm một open source về C/C++ Strlen và strcpy Ý tưởng nhóm phát triển mã nguồn mở PHP - Dạy Nhau Học Tổng hợp - Open source project - Wiki posts - C/C++ Honey_moon (Thực tế khắc nghiệt) November 28, 2014, 7:30am #2 cứ như thế này thiếu j tài nguyên cơ chứ a @ltd ?! cái bài này ví dụ lên để trong markdown. còn nữa mình giải thích cách dùng hạn chế post code thừa! như vật thì dễ hơn đối với người xem và người viết 2 Likes quanpham (passion) November 28, 2014, 7:32am #3 mình làm cũng chưa hoàn chỉnh lắm nhờ các bạn đóng góp thêm 2 Likes ltd (Lê Trần Đạt) November 28, 2014, 8:10am #4 @quanpham ơi, em dùng Markdown để post code nhé Cách post Code dùng Markdown trong Category Programming meta Làm sao để có thể hiển thị syntax highlighting bằng markdown? Các bạn phải đánh dấu ``` như ví dụ dưới đây Chú ý, dấu ``` được tạo ra bởi nút nằm bên trái số 1 trên bàn phím, nút này sẽ là ~ khi bấm giữ Shift Ví dụ cho C Nội dung: ``` void main() { } ``` Và đừng quên ``` ở cuối Kết quả void main() { } Ví dụ cho Pascal Nội dung: ``` Program HelloWorld; Begin WriteLn('Hello world!') {no ";" is required after the last statement of a block - adding one adds a "null stateme… P/S: Em làm rất tốt, cố gắng chỉnh sửa sao cho hoàn chỉnh là được. @Honey_moon em cũng bắt tay vào làm Open Source đi chứ 3 Likes quanpham (passion) November 28, 2014, 8:16am #5 hi hèn gì em viết code mãi mak k dc hi 1 Like ltd (Lê Trần Đạt) November 28, 2014, 8:38am #6 Em có thể sửa bài bằng cách Cách sửa bài viết trên diễn đàn DNH meta Bấm vào hình cây bút bạn sẽ sửa được bài [image] P/S: @quanpham em có muốn bài viết của em trở thành Wiki không? Nếu nó là Wiki thì ai cũng có thể sửa đổi và làm cho nó tốt hơn. Anh mới sửa 1 ít, nhưng anh nghĩ nhiều người khác cùng sửa thì nhanh hơn. Việc đổi sang Wiki post hay không là ý của em. Nhưng chuyển sang Wiki Post có nghĩa là open source, ai cũng có thể xem và sửa. Em có muốn Open Source bài viết của mình không? 2 Likes quanpham (passion) November 28, 2014, 8:54am #7 ltd: m có muốn Open Source bài viết của mình không? được chứ em đăng bài là để mọi người xem mak hi 2 Likes ltd (Lê Trần Đạt) split this topic November 28, 2014, 9:23am #8 I moved 2 posts to a new topic: Xin được cấp quyền điều chỉnh Wiki Post ltd (Lê Trần Đạt) November 28, 2014, 1:49pm #9 Thở không ra hơi luôn, sửa cái bài của @quanpham mệt quá. Em coi lại cách trình bày nhé, anh sửa quá chừng sửa. Nhìn vào history đi Bài này vẫn còn thiếu ví dụ, ai có ví dụ thì điền thêm vào nhé. Sử dụng tính năng Wiki Post ai cũng có thể sửa bài cả. 1 Like DungJun (Nguyễn Đình Dũng) November 29, 2014, 2:24am #10 A Đạt ơi, a nên sửa lại cái quyền edit wiki đi. Chứ ai cũng edit đc thì loạn lắm E chỉ vào cái edit nó báo là “basic users can edit it”. @ltd 1 Like quanpham (passion) November 29, 2014, 2:24am #11 em mới bổ sung thêm cái code nữa hi, để em tìm rồi bổ sung thêm 1 Like ltd (Lê Trần Đạt) November 29, 2014, 4:29am #12 DungJun: Chứ ai cũng edit đc thì loạn lắm Anh tin tưởng mọi người mà, có thể sau này anh chỉ cho Regular mới có quyền sửa nếu xảy ra tình trạng phá hoại. Nhưng anh tin mọi người 2 Likes ltd (Lê Trần Đạt) November 29, 2014, 4:32am #13 @quanpham ơi, anh nghĩ là em nên tách ra, mỗi topic chỉ nói về một hàm thôi, để sau này có ai thắc mắc về lĩnh vực gì, anh chỉ việc link tới topic đó, chứ để nhiều hàm và đặt cái tên “xử lý chuỗi thông dụng” thì khó tìm kiếm lắm. Anh thấy @kayz làm rất tốt này. Ý tưởng nhóm phát triển mã nguồn mở PHP - Dạy Nhau Học dev chat Mình thấy nước ngoài có rất nhiều ý tưởng hay và FREE nhưng tại VN, mình thấy chúng lại phải trả tiền mới có được. Thế nên cái ý tưởng này mới nảy ra, đó là phát triển mã nguồn mở PHP. Mình sẽ ủng hộ Open Source, để OpenSource phát triển mạnh mẽ và có một cộng đồng Việt khiến ai cũng biết. Chúng ta sẽ bàn về PHP cũng như là thiết kế Web, JQuery, CSS nói chung. Các bạn sẽ cùng nhau thảo luận các hàm, phương thức, lớp hay một sản phẩm nào đó mà chính chủ là Người Việt - hàng Việt chất lượng … Cả @Gio nữa 2 Likes quanpham (passion) November 29, 2014, 6:06am #14 em hiểu ý anh rồi . có nghĩa mình làm mỗi hàm mỗi cái topic phải không @ltd 1 Like dqh (Đinh Quốc Hân) November 29, 2014, 6:07am #15 Máy hàm nào giống nhau về chức năng có thể viết Gộp mà chẳng hạng câu lệnh lặp Honey_moon (Thực tế khắc nghiệt) November 29, 2014, 5:10pm #16 ltd: @quanpham ơi, anh nghĩ là em nên tách ra, mỗi topic chỉ nói về một hàm thôi, để sau này có ai thắc mắc về lĩnh vực gì, anh chỉ việc link tới topic đó, chứ để nhiều hàm và đặt cái tên “xử lý chuỗi thông dụng” thì khó tìm kiếm lắm. topic này e để a đạt sửa và góp ý vậy! thiết nghĩ là nếu post chung thế này mai mốt cái hàm nào nó có lỗi rồi mọi ng hỏi nhốn nháo lên thì cái topic này dài loằng ngoằng như rắn bò vậy! với lại một hàm thì dễ hiểu mà còn dễ góp ý nữa chứ 1 Like buidanhnam (bui danh nam) May 12, 2015, 2:15pm #18 quá hay luôn cảm ơn bác nhiều hoangtuan2106 (Hoang Tuan) May 18, 2015, 2:52pm #19 kiểu wchar_t có hỗ trợ hàm cắt xâu ko mọi người ltd (Lê Trần Đạt) May 19, 2015, 12:54am #20 hoangtuan2106: hàm cắt xâu Hàm này tên là gì trong C? khang_vn (Khang) June 21, 2015, 8:38am #21 Có dòng char *s; Vậy dấu * đằng sau s để làm gì ? 1 Like next page → DayNhauHoc's Discord Học C++ Free? Click Blog Dạy Nhau Học Tự Học Lập Trình 83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao? Từ khóa » Cách Copy Chuỗi Trong C++ Copy Chuỗi Trong C++ (strcpy, Strcpy_s, Strncpy) Copy String Trong C++ Bài Tập C++ - Sao Chép Chuỗi Trong C++ - VietTuts Lập Trình C++ - Sao Chép Chuỗi Cách Sao Chép Chuỗi Trong C Xâu Trong C++ - VNOI Hướng Dẫn Và Ví Dụ C/C++ String - Openplanning Chuỗi Trong C++ - Thủ Thuật Hàm Xây Dựng Sao Chép (Copy Constructor) Trong C++ - Freetuts LTC 72. Lập Trình Copy Hai Chuỗi Trong C, Hàm Strcpy Trong - YouTube Hàm Strcpy() Trong C / C++ - Freetuts Chuỗi (String) Trong C/C++ Lớp String Trong C++ Và Các Hàm Thường Dùng Của Lớp String