Chuỗi được hiểu là yếu tố cần thiết trong bộ công cụ của một lập trình viên. Chúng là một trong những kiểu dữ liệu cơ bản được sử dụng phổ biến nhất, đặc biệt là với việc viết mã và gỡ lỗi trong quá trình phát triển, cũng như trong khi định dạng đầu ra cho người dùng. Box.edu sẽ giúp các bạn hiểu hơn về strlen C, cách bạn có thể tạo chuỗi, ghi chúng vào đầu ra, đọc đầu vào của người dùng dưới dạng chuỗi và đếm chúng. Cùng theo dõi hết bài viết dưới đây nhé!
Xem thêm: Những thông tin cần biết về toán tử Sizeof trong C
Xem thêm: Tổng quan những kiến thức cần lưu ý về hàm C fopen
Xem thêm: Chương trình C để chuyển đổi số thập phân sang định dạng nhị phân
Mục lục bài viết
Tổng quan về strlen C
Tổng quan về strlen C
Chắc chắn một điều là khái niệm về chuỗi trong ngôn ngữ C cũng khá đa dạng và được sử dụng nhiều trong quá trình tìm hiểu ngôn ngữ lập trình C này.
Thông thường các chuỗi trong ngôn ngữ lập trình C đều được kết thúc bằng NULL. Trong đó NULL được biết đến là ký tự một phần của bộ ASCII và ASCII mở rộng.
Hôm nay chúng tôi sẽ giới thiệu đến các bạn thông qua các giá trị đó là: 0 – 127 cơ sở ASCII của bộ ký tự 7 bit. Còn đối với các ứng dụng quốc tế hóa, bạn cũng cần các ký tự rộng và quan tâm về việc mã hóa.
Thiết lập môi trường strlen C của bạn
Trong trường hợp bạn là người mới tìm hiểu về ngôn ngữ C thì bạn có thể hưởng lợi từ việc sử dụng trình biên dịch C này ở từng bước nhỏ. Với Windows thì bạn còn có thể sử dụng chuỗi công cụ là Mingw GNU, trình biên dịch Borland C / C ++ hoặc Microsoft Visual Studio và shell trong Linux. Tuy nhiên hãy bắt đầu bằng cách gõ vào shell cụ thể:
$ gcc –version
và quan sát kết quả, như vậy bạn đã sẵn sàng đi sâu vào quá trình phát triển C.
$ gcc –version
gcc (Ubuntu / Linaro 4.6.3-1ubuntu5) 4.6.3
API chuỗi trong C
Để có thể thực hiện chuỗi trong C thì phải bao gồm các hoạt động đầu vào cũng như đầu ra trong chuỗi ở chương trình của bạn một cách hoàn chỉnh, đồng thời bạn còn có thể thêm định nghĩa về tệp tiêu đề như sau:
#include <string.h>
Trong đó các chuỗi được viết chính là mảng ký tự được kết thúc bởi NULL. Bạn có thể khai báo một chuỗi như sau bằng ngôn ngữ lập trình C:
char roman_empang_name [] = “Julius Caesar”;
Đồng thời có thể sử dụng hàm sizeof và strlen nội trang, vậy là các bạn có thể in kích thước của bộ nhớ chuỗi và độ dài chuỗi. Hàm strlen C được định nghĩa trong tiêu đề ‘string.h’ và nhận làm đối số chính là một con trỏ tới một mảng ký tự mà nó đọc cho đến ký tự NULL và sẽ trả về số đếm cho đến thời điểm hiện tại. Như vậy danh sách mã cho ‘string_demo0.c’ cụ thể như sau:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main () {
char roman_empang_name [] = “Julius Caesar”;
printf (“Độ dài của chuỗi ‘% s’ =% d \ n”, roman_empang_name, strlen (roman_empang_name));
printf (“số byte để lưu trữ chuỗi ‘% s’ =% d \ n”, roman_empang_name, sizeof (roman_empang_name));
trả về 0;
}
Quá trình biên dịch và chạy chương trình, bạn sẽ thấy thông báo đầu cuối dưới đây:
Độ dài của chuỗi ‘Julius Caesar’ = 13
số byte để lưu trữ chuỗi ‘Julius Caesar’ = 14
Để biết thêm thông tin chi tiết, bạn hãy đọc trang hướng dẫn sử dụng trên Linux để biết chức năng của chúng một cách cụ thể nhất.
$ man strlen
sẽ được hiển thị như một trang đó là:
STRLEN (3) Sổ tay hướng dẫn lập trình viên Linux STRLEN (3)
TÊN
strlen – tính độ dài của một chuỗi
TÓM TẮT
#include <string.h>
size_t strlen (const char * s);
SỰ MIÊU TẢ
Hàm strlen () tính toán độ dài của chuỗi s, không bao gồm
byte null kết thúc (”).
Các chức năng khác của strlen C
Ngoài những vai trò của strlen C đã được trình bày ở trên thì đồng thời nó cũng một vài chức năng quan trọng khác đó là có thể so sánh chuỗi, sao chép chuỗi đầy đủ hoặc tối đa n – ký tự, sao chép chuỗi và sử dụng các quy trình để kiểm tra xem các ký tự này là các chữ cái, con số hay dấu cách… Để biết một cách chi tiết, hãy kéo trang hướng dẫn sau lên bằng cách nhập, $ man strcpy,
STRCPY (3) Hướng dẫn sử dụng lập trình viên Linux STRCPY (3)
TÊN
strcpy, strncpy – sao chép một chuỗi
TÓM TẮT
#include <string.h>
char * strcpy (char * dest, const char * src);
char * strncpy (char * dest, const char * src, size_t n);
SỰ MIÊU TẢ
Hàm strcpy () sao chép chuỗi được trỏ đến bởi src, bao gồm
byte null kết thúc (”), tới bộ đệm được trỏ tới bởi đích.
Tạo chuỗi thời gian chạy và phân bổ bộ nhớ
Tạo chuỗi thời gian chạy và phân bổ bộ nhớ
Để có thể tạo được một chuỗi trong thời gian chạy, ví dụ như từ dữ liệu nhận được qua Internet, hoặc từ thông tin người dùng nhập vào hay các tệp đọc trên đĩa, thì bản thân người thực hiện phải biết được số byte mà bạn muốn lưu trữ trên bộ nhớ. Vì thông tin này thường không có sẵn trong thời gian chạy, do đó tất cả phải được cấp phát bộ nhớ và tạo khoảng không gian mới.
Dựa theo quy trình get_new_user_info này, chúng tôi sử dụng hàm malloc, (sử dụng chỉ thị #include <stdlib.h>), lấy không gian bộ nhớ có thể sử dụng từ bộ nhớ heap trong hệ điều hành.
Ở ví dụ dưới đây chúng tôi sẽ yêu cầu bộ nhớ cho một chuỗi 500 byte mà chúng tôi cần tại thời điểm chạy. Sau đó, chúng tôi tạo một bản sao cục bộ của chuỗi đầu vào tối đa 500 byte và trả lại một bản sao mới cho người dùng.
char * make_upto500char_copy (char * old_str) {
char * str500 byte = malloc (sizeof (char) * 500);
strncpy (str500 byte, old_str, 500);
trả về str500 byte;
}
Sử dụng một số hàm main () của boilerplate để thúc đẩy quy trình này, chúng tôi có một danh sách chương trình cho mã, ‘str_demo0.c’ như sau.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char * make_upto500char_copy (char * old_str) {
char * str500 byte = malloc (sizeof (char) * 500);
strncpy (str500 byte, old_str, 500 * sizeof (char));
trả về str500 byte;
}
int main () {
char * old str = “Xin chào, Xin chào, chúng tôi là chính mình …”;
char * new_copy = make_upto500char_copy (old_str);
new_copy [0] = ‘J’; // thay đổi chữ cái đầu tiên
printf (“Cũ =% s \ n Mới =% s \ n”, old_str, new_copy);
miễn phí (new copy);
trả về 0;
}
Do đó khi thực hiện biên dịch mã và sau đó chạy chương trình, bạn sẽ thấy kết quả được thể hiện như sau:
Old = Xin chào, Xin chào, chúng tôi là chính mình …
Mới = Jello, Xin chào, chúng tôi là chính mình …
Ví dụ độ dài danh sách strlen C của chuỗi đầu vào
Trong ví dụ này, chúng tôi sẽ đọc thông tin đầu vào của người dùng trên bảng điều khiển và in ra thống kê về số dòng và độ dài dòng. Độ dài của chuỗi đầu vào sẽ bao gồm ký tự ‘\ n’ hoặc EOL, đó là lý do tại sao nó luôn lớn hơn 1 so với kích thước ký tự thực trong đó. Chúng tôi sử dụng hàm getline () trong Linux để đọc luồng đầu vào của người dùng và xuất dữ liệu. Trong đó danh sách chương trình, ‘strlen_readip.c’ là:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main () {
char * input_line = NULL;
int line_no = 0, read_count = 0;
unsigned int data_length = 0;
while (getline (& input_line, & read_count, stdin)! = – 1) {
printf (“###% d | L =% d |% s \ n >>>”, ++ line_no, strlen (input_line), input_line);
}
trả về 0;
}
Sau khi biên dịch và đưa ra đầu vào sau một cách tương tác, cuối cùng sẽ đưa ra đầu ra như bên dưới:
tên của bạn là gì
### 1 | L = 18 | tên của bạn là gì
>>> đây là sơ cấp.
### 2 | L = 25 | Đây là điều sơ đẳng.
>>> Ok, tạm biệt
### 3 | L = 6 | Được rồi tạm biệt
^ D
Tổng kết
Box.edu rất mong rằng những chia sẻ kiến thức về strlen C sẽ giúp bạn bổ sung thêm thông tin một cách chính xác và hiểu sâu các vấn đề mới trong lĩnh vực lập trình này. Đặc biệt là các nhà phát triển phần mềm sẽ sử dụng các chuỗi một cách phổ biến trong mã. Chuỗi là một trong những yếu tố cần thiết trong bộ công cụ của một nhà lập trình viên.
Chúng là một trong những kiểu dữ liệu cơ bản được sử dụng phổ biến nhất, đặc biệt trong khi viết mã và gỡ lỗi trong quá trình phát triển, cũng như trong khi định dạng đầu ra cho người dùng. Ngoài ra bạn có thể tìm hiểu thêm về các thuật toán và cấu trúc dữ liệu khi bạn đã nắm vững các kiến thức cơ bản về ngôn ngữ lập trình C.