Search…

Hiện Thực và Sử Dụng Hàm strcmp - strcpy - strlen trong C/C++

25/01/20213 min read
Hướng dẫn sử dụng hàm strlen để lấy độ dài chuỗi, hàm strcmp để so sánh hai chuỗi, hàm strcpy để copy chuỗi trong C.

String là một một mảng các ký tự được viết liền nhau, trong lập trình thường sử dụng rất nhiều để lưu chuỗi kí tự. Để thao tác với chuỗi có rất nhiều hàm và thư viện string.h hỗ trợ nhiều hàm hữu ích để xử lý chuỗi và hàm hỗ trợ xử lý mảng nhị phân.

Bài viết này chỉ đề cập đến cách hiện thực và sử dụng các hàm strlen, strcpy và strcmp trong thư viện string.h hỗ trợ xử lý chuỗi.

* Chuỗi trong bài viết này đề cập đến C string char[], trong bài viết này không đề cập đến std::string trong C++.

String là gì?

String (chuỗi ký tự) là một dãy gồm các ký tự hoặc một mảng các ký tự và String được kết thúc bằng ký tự \0 (còn được gọi là ký tự NULL trong bảng mã ASCII).

Các hằng chuỗi ký tự được đặt trong cặp dấu nháy kép "...".

Hàm strlen()

strlen (String Length) là hàm dùng để đếm số lượng ký tự có trong mảng. Nó cho biết được kích thước của mảng.

int strlen(char a[])
{
	int n = 0;
	while (a[n] != '\0')
		n++;
	return n;
}

void main()
{
	char A[5] = "STDIO";
	int x;
	x = strlen(A);
}

LƯU Ý

Vòng lặp trong strlen sẽ dừng lại khi kiểm tra thấy ký tự trong chuỗi hiện tại là \0, nên:

  • Nếu chuỗi bị mất ký tự \0 thì hàm sẽ duyệt từng ký tự cho đến khi gặp được ký tự \0 thì hàm dừng lại.
  • Nếu ký tự \0 nằm giữa chuỗi thì những ký tự sau \0 sẽ không được đếm.

Ví dụ:

void main()
{
	char A[6] = {'s', 't', 'd', '\0', 'i', 'o'};
	int x = strlen(A);
}

Từ trên thấy được x == 3 trong khi mảng có 6 ký tự.

Hàm strcpy()

strcpy (String Copy) dùng để sao chép toàn bộ ký tự của chuỗi này qua chuỗi khác.

void strcpy(char A[], char B[]) // copy chuoi B[] vao chuoi A[]
{
	int n = 0;
	do
	{
		A[n] = B[n];
		n++;
	}
	while (B[n] != '\0');
}

void main()
{
	char A[5];
	char B[5] = "STDIO";
	strcpy(A, B);
}

LƯU Ý

Hàm strcpy chỉ sao chép dữ liệu từ mảng B[] sang mảng A[], nếu mảng A[] có kích thước nhỏ hơn mảng B[] thì sẽ xảy ra việc tràn dữ liệu của mảng A[].

Hàm strcmp()

strcmp (String Compare) là hàm dùng để so sánh hai chuỗi với nhau. Hàm sẽ so sánh hai chuỗi với nhau và trả về các giá trị tương ứng.

  • Nếu A[] > B[], kết quả trả về là 1
  • Nếu A[] > B[], kết quả trả về là 0
  • Nếu A[] > B[], kết quả trả về là -1

Hàm strcmp sẽ so sánh từng hai phần tử của hai chuỗi có cùng vị trí với nhau.

Cách so sánh giống với các so sánh 2 số thực. Tức là chỉ cần 1 phần tử của mảng A[] lớn hơn phần tử cùng vị trí của mảng B[] thì mảng A[] sẽ lớn hơn mảng B[]. Ví dụ X = 3.14160 và Y = 3.14159 thì X > Y.

int strcmp(char a[], char b[])
{
	int n = 0;
	do
	{
		if (a[n] > b[n])
			return 1;
		else if (a[n] < b[n])
			return -1;
		n++;
	} while (a[n] != '\0' || b[n] != '\0')
	
	return 0;
}

void main()
{
	char A[5] = "abcde";
	char B[5] = "abcde";
	int x;
	x = strcmp(A, B);
}
IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024