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.