Tổng Hợp Các Hàm Xử Lý Chuỗi Trong C ++, Xử Lý Chuỗi (String) Trong C

Trang chủ | KIẾN THỨC LẬP TRÌNH | C/C++ | Kiến thức về chuỗi (string) trong C và cách nhập xuất chuỗi trong C.

Bạn đang xem: Hàm xử lý chuỗi trong c

Chuỗi trong lập trình C

Trong phần này, bạn sẽ được tìm hiểu các kiến thức liên quan đến string hay chuỗi trong C: cách khai báo, khởi tạo và sử dụng chúng cho các hoạt động vào/ra thông qua các ví dụ.

**Trong lập trình C, chuỗi là một chuỗi những ký tự được kết thúc bằng ký tự rỗng \ 0. Ví dụ :char c < > = “ c string ” ;Khi trình biên dịch gặp một chuỗi có những ký tự được đặt trong dấu < > thì theo mặc định, nó sẽ thêm một ký tự rỗng \ 0 vào cuối .

Làm thế nào để khai báo chuỗi trong C?

Dưới đây là cách khai báo chuỗi ký tự trong C:

char s < 5 > ;Tôi đã khai báo một chuỗi gồm 5 ký tự .

Cách khởi tạo chuỗi

Bạn hoàn toàn có thể khởi tạo chuỗi theo những cách sau đây :char c < > = “ abcd ” ;char c < 50 > = “ abcd ” ;char c < > = { ‘ a ’, ‘ b ’, ‘ c ’, ‘ d ’, ‘ \ 0 ’ } ;char c < 5 > = { ‘ a ’, ‘ b ’, ‘ c ’, ‘ d ’, ‘ \ 0 ’ } ;Hãy xem qua 1 ví dụ khác :char c < 5 > = “ abcde ” ;Trong ví dụ này, tôi đã thử gán 6 ký tự ( ký tự ở đầu cuối là ‘ \ 0 ’ ) cho mảng char – mảng này chỉ có 5 ký tự. Tuy nhiên, mọi thứ đều diễn ra khá tệ và bạn không nên làm những việc tựa như như thế .

Gán giá trị cho chuỗi

Mảng ký tự trong C và chuỗi ký tự là 2 phần tử đồng hạng hai trong lập trình C. Chúng không hỗ trợ toán tử gán khi nó được khai báo. Ví dụ,

char c < 100 > ;c = “ C programming ” ; / / Error ! array type is not assignable .Lưu ý, bạn hoàn toàn có thể sử dụng hàm strcpy ( ) để sao chép chuỗi trên .

Đọc chuỗi mà người dùng nhập vào

Bạn hoàn toàn có thể sử dụng hàm scanf ( ) để đọc một chuỗi .Hàm scanf ( ) đọc một chuỗi ký tự cho đến khi nó gặp khoảng chừng trắng ( dấu cách, dòng mới, tab, … )Ví dụ 1 : dùng hàm scanf ( ) để đọc một chuỗi# includeint main ( ){char name < 20 > ;printf ( “ Enter name : “ ) ;scanf ( “ % s ”, name ) ;printf ( “ Your name is % s. ”, name ) ;return 0 ;} Đầu raEnter name : Dennis RitchieYour name is Dennis. Mặc dù tôi đã nhập Dennis Ritchie vào lập trình trên nhưng chỉ có “ Dennis ” là được tàng trữ trong chuỗi name. Bởi vì có một khoảng chừng trống phía sau Dennis .

Làm thế nào để đọc một dòng văn bản?

Bạn hoàn toàn có thể sử dụng hàm fgets ( ) để đọc 1 dòng trong chuỗi. Và sử dụng hàm puts ( ) để hiển thị chuỗi .Ví dụ 2 : Hàm fgets ( ) và put ( )# includeint main ( ){char name <3 0 > ;printf ( “ Enter name : “ ) ;fgets ( name, sizeof ( name ), stdin ) ; / / read stringprintf ( “ Name : “ ) ;puts ( name ) ; / / display stringreturn 0 ;}

Đầu raEnter name: Tom HanksName: Tom Hanks

Dưới đây, tôi sử dụng hàm fgets ( ) để đọc một chuỗi do người dùng nhập vào. fgets ( name, sizeof ( name ), stdlin ) ; / / read stringKết quả sizeof ( name ) là 30. Do đó, tôi hoàn toàn có thể lấy tối đa 30 ký tự làm đầu vào và cũng chính là size của chuỗi name .Để in chuỗi, tôi sử dụng hàm puts ( name ) ; .Lưu ý : Hàm gets ( ) cũng có tính năng lấy đầu vào do người dùng nhập. Tuy nhiên, nó không phải là hàm tiêu chuẩn trong lập trình C .

Bởi vì hàm gets() cho phép bạn nhập chuỗi trong C độ dài ký tự tùy ý. Điều này sẽ dẫn đến tình trạng tràn bộ nhớ đệm.

Truyền chuỗi vào hàm nhập chuỗi trong C

String trong C có thể được truyền vào hàm theo cách tương tự như mảng. Xem chi tiết cách truyền mảng vào hàm tại đây.

Ví dụ 3: Truyền một chuỗi vào một hàm

# includevoid displayString ( char str < > ) ;int main ( ){char str < 50 > ;printf ( “ Enter string : “ ) ;fgets ( str, sizeof ( str ), stdin ) ;displayString ( str ) ; / / Passing string to a function .return 0 ;}void displayString ( char str < > ){printf ( “ String Output : “ ) ;puts ( str ) ;}

Chuỗi và biến pointer

Tương tự như mảng, tên chuỗi cũng được phân rã thành biến pointer. Do đó, bạn hoàn toàn có thể sử dụng biến pointer để thực thi thao tác trên những thành phần của chuỗi .Tôi nghĩ là bạn nên xem lại phần mảng và biến pointer trong lập trình C trước khi xem ví dụ dưới đây .Ví dụ 4 : Chuỗi và biến pointer# includeint main ( void ) {char name < > = “ Harry Potter ” ;printf ( “ % c ”, * name ) ; / / Output : Hprintf ( “ % c ”, * ( name + 1 ) ) ; / / Output : aprintf ( “ % c ”, * ( name + 7 ) ) ; / / Output : ochar * namePtr ;namePtr = name ;printf ( “ % c ”, * namePtr ) ; / / Output : Hprintf ( “ % c ”, * ( namePtr + 1 ) ) ; / / Output : aprintf ( “ % c ”, * ( namePtr + 7 ) ) ; / / Output : o}Các hàm giải quyết và xử lý chuỗi thường được sử dụngstrlen() – tính độ dài của một chuỗistrcpy() – sao chép từ một chuỗi sang chuỗi khácstrcmp() – so sánh 2 chuỗistrcat() – nối 2 chuỗi

Hàm xử lý chuỗi trong C

Thao tác trên chuỗi trong lập trình C bằng cách sử dụng các hàm thư viện.

strlen ( ) – tính độ dài của một chuỗistrcpy ( ) – sao chép từ một chuỗi sang chuỗi khácstrcmp ( ) – so sánh 2 chuỗistrcat ( ) – nối 2 chuỗiTrong phần này, bạn sẽ được học về cách thao tác trên chuỗi trong lập trình C bằng cách sử dụng những hàm tiêu chuẩn như gets ( ), puts, strlen ( ), …Bên cạnh đó, bạn cũng sẽ học được cách lấy chuỗi do người dùng nhập vào và thực thi những thao tác trên chuỗi .Bạn phải tiếp tục thao tác trên những chuỗi, tùy thuộc vào yếu tố cần xử lý .Tuy nhiên, không phải toàn bộ những thao tác trên chuỗi đều được thực thi một cách thủ công bằng tay, chính bới điều này khiến cho lập trình của bạn trở nên phức tạp và “ cồng kềnh ” .Để xử lý yếu tố này, lập trình C đã tương hỗ một lượng lớn những hàm giải quyết và xử lý chuỗi trong thư viện tiêu chuẩn “ string. h ” .Dưới đây là một số ít hàm giải quyết và xử lý chuỗi thường được sử dụng

Hàm Chức năng của hàm
strlen() tính độ dài của chuỗi
strcpy() sao chép một chuỗi sang chuỗi khác
strcat() nối 2 chuỗi
strcmp() so sánh 2 chuỗi
strlwr() chuyển đổi chuỗi sang chữ thường
strupr() chuyển đổi chuỗi sang chữ in hoa

Các hàm giải quyết và xử lý chuỗi được xác lập trong tệp tiêu đề “ string. h ” .# includeLưu ý : Bạn phải thêm cả đoạn mã bên dưới để chạy những hàm giải quyết và xử lý chuỗi .

Hàm gets() và puts()

gets ( ) và puts ( ) là 2 hàm giải quyết và xử lý chuỗi dùng để lấy nguồn vào của chuỗi do người dùng nhập và hiển thị nó một cách riêng không liên quan gì đến nhau. Bạn hoàn toàn có thể xem lại phần Chuỗi trong lập trình C để biết thêm thông tin cụ thể .# includeint main ( ){char name <3 0 > ;printf ( “ Enter name : “ ) ;gets ( name ) ; / / Function to read string from user .printf ( “ Name : “ ) ;

puts(name); //Function to display string.

Xem thêm: Cách Khắc Phục Màn Hình Bị Đen 2 Bên Màu Đen? Màn Hình Máy Tính Bị Thu Nhỏ 2 Bên Màu Đen

return 0 ;}

Lưu ý, mặc dù hàm gets() và puts() xử lý các chuỗi trong C nhưng cả hai hàm này đều được xác định trong tệp tiêu đề “stdio.h”.