Nội Dung
1.Một số hàm cơ bản để thao tác với chuỗi
Khi làm việc với kiểu chuỗi trong C, sẽ có rất nhiều vấn đề sảy ra. Vì vậy trong C đã cung cấp cho ta khá nhiều hàm để xử lý và thao tác với chuỗi, các hàm chủ yếu thuộc thư viện <string.h>
Dưới đây tôi liệt kê ra 4 hàm thường dùng khi thao tác với chuỗi ký tự đó là: strcpy, strcat, strlen và strcmp:
Hàm | Chức năng |
strcpy (s1, s2); | Sao chép chuỗi s2 thành chuỗi s1. |
strcat (s1, s2); | Ghép nối chuỗi s2 vào cuối chuỗi s1. |
strlen (s1); | Trả về độ dài của chuỗi s1. |
strcmp (s1, s2); | Trả về 0 nếu s1 và s2 giống nhau; nhỏ hơn 0 nếu s1 |
2.Strcpy – sao chép chuỗi s2 thành s1
Ví dụ tôi có 2 chuỗi ở 2 biến là: hoten1 và hoten2 tôi muốn sao chép chuỗi ở biến hoten2 vào hoten1 tôi sẽ sử dụng hàm strpy(hoten1, hoten2).
#include <stdio.h> #include<string.h> int main(){ //Hoten1 ban dau chua co gi char hoten1[13]; //Hoten2 có gia tri la: Nguyen Van A char hoten2[13] = "Nguyen Van A"; //Sao chep hoten2 vao hoten1 strcpy(hoten1, hoten2); printf("Ho ten 1 la: %s",hoten1); return 0; }
Ho ten 1 la: Nguyen Van A |
3.Strcat – ghép nối chuỗi s2 vào cuối chuỗi s1
Ví dụ dưới đây tôi cần ghép chuỗi ở biến ten vào biến ho tôi sẽ sử dụng hàm strcat(ho,ten).
#include <stdio.h> #include<string.h> int main(){ //Hoban dau co gia tri la: Nguyen char ho[8] = "Nguyen "; //ten có gia tri la: Van A char ten[6] = "Van A"; //Hien thi ho ten sau khi noi chuoi o bien ten vao chuoio bien ho printf("Ho ten la: %s",strcat(ho,ten)); return 0; }
Ho ten la: Nguyen Van A |
4.Strlen – trả về độ dài của chuỗi s1
Tôi muốn đếm xem một chuỗi có độ dài là bao nhiêu ký tự, tôi sẽ sử dụng hàm strlen(s1).
#include <stdio.h> #include<string.h> int main(){ char hoTen[13] = "Nguyen Van A"; //Dem va hien thi xem chuoi o bien hoTen co bao nhieu ky tu printf("Chuoi tren co %d ky tu",strlen(hoTen)); return 0; }
Chuoi tren co 12 ky tu |
Lưu ý rằng việc đếm ký tự sẽ bỏ qua ký tự ‘’\0’’ ở cuối chuỗi nên chuỗi trên chỉ còn 12 ký tự, tuy nhiên khi khai báo giá trị cho chuỗi thì ta phải khai báo cả cho ký tự “\0” ở cuối chuỗi nên sẽ là 13 ký tự.
5.Strcmp – trả về 0 nếu s1 và s2 giống nhau
Ví dụ tôi cần so sánh 2 chuỗi xem chúng có giống nhau hay không, để thực hiện việc này tôi sử dụng hàm strcmp (s1, s2); trong đó s1 và s2 là 2 chuỗi cần được so sánh, nếu bằng nhau sẽ cho ra kết quả bằng số 0, nếu không bằng nhau sẽ đưa ra kết quả nhỏ hơn 0.
#include <stdio.h> #include<string.h> int main(){ char chuoi1[13] = "Nguyen Van A"; char chuoi2[13] = "Nguyen Van A"; char chuoi3[13] = "Nguyen Van B"; //Hien thi ket qua so sanh chuoi1 voi chuoi2 printf("Ket qua so sanh chuoi1 voi chuoi2: %d \n",strcmp(chuoi1,chuoi2)); //Hien thi ket qua so sanh chuoi1 voi chuoi2 printf("Ket qua so sanh chuoi1 voi chuoi3: %d",strcmp(chuoi1,chuoi3)); return 0; }
Ket qua so sanh chuoi1 voi chuoi2: 0
Ket qua so sanh chuoi1 voi chuoi3: -1 |
Ta thấy rằng chuoi1 khi so sánh với chuoi2 có kết quả bằng 0, vậy ta có thể hiểu rằng 2 chuỗi bằng nhau khi và chỉ khi chúng có cùng kích cỡ và giá trị.
Ngược lại chuoi1 so sánh với chuoi3 ra kết quả -1 (nhỏ hơn 0), vậy ta có thể hiểu rằng 2 chuỗi không bằng nhau là 2 chuỗi không có cùng giá trị hoặc kích cỡ.
Lưu ý: Để sử dụng được các hàm: strcpy(), strcat(), strlen(), strcmp() ta cần phải include thư viện <string.h> vào chương trình. Nếu không có thư viện chương trình sẽ không hiểu được các hàm trên và không thể thực thi được.