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.


