Độ dài chuỗi trong C (strlen) | Laptrinhcanban.com

HOME › >>

Độ dài chuỗi trong C (strlen)

Trong ngôn ngữ lập trình C, chuỗi là một thành phần quan trọng và phổ biến trong xử lý văn bản. Để làm việc với chuỗi một cách hiệu quả, bạn cần biết cách đo độ dài của chuỗi. Trong bài viết này, chúng ta sẽ tìm hiểu về cách đo độ dài chuỗi trong ngôn ngữ C thông qua hàm strlen(), và cách ứng dụng trong thực tế.

Độ dài chuỗi trong C là gì

Chúng ta coi độ dài chuỗi trong C chính là tổng số mã ký tự tạo nên các ký tự trong nó (không bao gồm ký tự NULL). Và do các ký tự trong C thường được tạo bởi một mã ký tự nên trong phần lớn trường hợp thì độ dài chuỗi chính là số ký tự tạo nên chuỗi đó (không bao gồm ký tự NULL).

Trong ngôn ngữ C, chuỗi là một dãy các ký tự kết thúc bằng ký tự NULL ('\0'). Điều này có nghĩa là ký tự NULL là ký tự cuối cùng trong chuỗi, và tất cả các ký tự trước nó đều thuộc về chuỗi.

Ví dụ, chuỗi “Hello” thực sự là một dãy các ký tự: ‘H’, ‘e’, ‘l’, ‘l’, ‘o’, và ký tự NULL ‘\0’. Khi bạn làm việc với chuỗi trong C, bạn cần lưu ý rằng độ dài của chuỗi được tính bằng cách đếm tất cả các ký tự từ đầu đến ký tự NULL.

Ví dụ chuỗi Hello được tạo bởi 5 ký tự (không bao gồm ký tự NULL), nên độ dài của chuỗi này sẽ bằng 5 đơn vị.

Lưu ý rằng độ dài của chuỗi có thể khác với số ký tự có trong chuỗi, trong trường hợp tồn tại ký tự được tạo bởi hơn 2 mã ký tự, như là ký tự tiếng Việt có dấu, hoặc là kanji tiếng Nhật chẳng hạn.

char srt1[]="a";
// độ dài chuỗi str1 = 1

char srt2[]="ê";
// độ dài chuỗi str2 = 2

char srt3[]="đế";
// độ dài chuỗi str3 = 5

Tính độ dài chuỗi bằng hàm strlen trong C

Hàm strlen trong C là một hàm có sẵn header file string.h, giúp chúng ta tính độ dài chuỗi trong đối số.

Cú pháp sử dụng hàm strlen để tính độ dài chuỗi trong C như sau:

strlen(str);

Trong đó str là tên của chuỗi cần tính độ dài.

Hàm strlen() sẽ trả về một giá trị kiểu size_t là độ dài của chuỗi (số lượng ký tự trước ký tự NULL).

Lưu ý là chúng ta cần phải viết thêm dòng #include <string.h> để load header file string.h để có thể sử dụng được hàm strlen() trong chuơng trình.

Ví dụ cụ thể:

#include <stdio.h>
#include <string.h>

int main(void)
{
char str[] = "I Love C/C++";
int len;

len = strlen(str);
printf("Length of \"%s\" is %d.\n", str, len);
}
//Length of "I Love C/C++" is 12.

Tính độ dài chuỗi có chứa tiếng Việt bằng hàm strlen trong C

Trong bài Ký tự trong C (character literal) chúng ta đã biết trong C, các ký tự tiếng Việt có dấu (ví dụ như ă, ú,đ…) được biểu diễn bởi nhiều hơn 2 mã ký tự, do đó nếu sử dụng hàm strlen() với các ký tự này thì chúng ta sẽ nhận được kết quả nhiều hơn số ký tự tạo nên chuỗi.

Chuyện này cũng tương tự khi chúng ta sử dụng hàm strlen() với các các ký tự được tạo bởi 2 bite trở lên như hán tự tiếng Trung hoặc tiếng Nhật zenkaku.

Điều này khá là khác biệt so với các ngôn ngữ khác, ví dụ như Python chẳng hạn, vốn tính độ dài chuỗi chính bằng số ký tự tạo nên nó, chứ không phụ thuộc vào số mã ký tự tạo nên các ký tự trong nó.

Bởi vậy, chúng ta cần chú ý không nhầm lẫn độ dài của chuỗi trong C với số ký tự trong chuỗi khi trong chuỗi đó chứa các ký tự được biểu diễn bởi nhiều hơn 2 mã ký tự.

Ví dụ cụ thể:

#include <stdio.h>
#include <string.h>

int main(void){

// Tính độ dài chuỗi chứa ký tự tiếng anh
char str1[] = "e";
printf("%d\n",strlen(str1));//1

// Tính độ dài chuỗi chứa ký tự tiếng Việt
char str2[] = "ê";
printf("%d\n",strlen(str2));//2

// Tính độ dài chuỗi chứa ký tự tiếng Việt có dấu
char str3[] = "ế";
printf("%d\n",strlen(str3));//3

// Tính độ dài chuỗi chứa kanji tiếng Nhật
char str4[] = "東京";
printf("%d\n",strlen(str4));//6

}

Độ Dài Chuỗi và Bộ Nhớ

Khi làm việc với chuỗi và đo độ dài của chuỗi, bạn cần lưu ý về bộ nhớ. Hàm strlen hoạt động bằng cách duyệt qua từng ký tự của chuỗi cho đến khi gặp ký tự NULL. Điều này có nghĩa là độ dài của chuỗi ảnh hưởng đến thời gian chạy của chương trình. Đối với chuỗi có độ dài lớn, việc đo độ dài có thể tốn thời gian đáng kể.

Ngoài ra, bạn cần đảm bảo rằng bộ nhớ đủ lớn để lưu trữ chuỗi cùng với ký tự NULL. Khi bạn khai báo một mảng để lưu trữ chuỗi, hãy đảm bảo nó đủ lớn để chứa chuỗi và ký tự NULL. Nếu không, việc ghi vào bộ nhớ ngoài phạm vi của mảng có thể gây ra lỗi.

Ứng Dụng Thực Tế Của Độ Dài Chuỗi

Đo độ dài chuỗi là một phần quan trọng của xử lý văn bản trong lập trình C và có nhiều ứng dụng thực tế:

  1. Kiểm Tra Độ Dài Đầu Vào: Khi bạn cần kiểm tra xem dữ liệu đầu vào có đủ dài để xử lý không. Điều này đặc biệt quan trọng khi đọc dữ liệu từ bàn phím hoặc từ tệp tin.

  2. Chuẩn Hóa Chuỗi: Đôi khi, bạn cần chuẩn hóa dữ liệu bằng cách loại bỏ các ký tự thừa hoặc khoảng trắng ở đầu và cuối chuỗi.

  3. Tách Từ Trong Chuỗi: Khi bạn cần tách chuỗi thành các từ riêng lẻ, bạn có thể sử dụng độ dài của chuỗi để xác định vị trí của các khoảng trắng hoặc dấu cách.

  4. Xử Lý Địa Chỉ Email: Trong ứng dụng liên quan đến email, bạn có thể kiểm tra xem địa chỉ email có đủ dài và đúng định dạng không.

Độ Dài Chuỗi Unicode

Khi bạn làm việc với chuỗi Unicode, đo độ dài chuỗi có thể trở nên phức tạp hơn do mã hóa đa dạng của các ký tự. Bạn cần sử dụng thư viện hỗ trợ đa ngôn ngữ và mã hóa như ICU (International Components for Unicode) để xử lý chuỗi Unicode một cách đáng tin cậy.

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn cách tính độ dài chuỗi trong C bằng hàm strlen() rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về C trong các bài học tiếp theo.

URL Link

https://laptrinhcanban.com/c/lap-trinh-c-co-ban/chuoi-string-trong-c/do-dai-chuoi-trong-c/

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME  › >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.