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.