Nối chuỗi trong C++ (strcat, strncat, sprintf)

Hướng dẫn cách nối chuỗi trong C++. Bạn sẽ học được cách sử dụng các hàm nối chuỗi trong C++ như strcat() và strncat() để nối chuỗi sau bài viết này.

Chúng ta có 3 phương pháp để nối chuỗi trong C++ như sau:

  • Hàm strcat(): nối 2 chuỗi trong C++
  • Hàm strncat(): nối 2 chuỗi trong C++ với số lượng ký tự chỉ định
  • Hàm sprintf(): nối nhiều chuỗi trong C++

Nối 2 chuỗi trong C++ | Hàm strcat()

Hàm strcat() trong C++ là một hàm có sẵn trong header file cstring, giúp chúng ta nối 2 chuỗi trong C++ lại với nhau.

Chúng ta sử dụng hàm strcat() để nối chuỗi trong C++ với cú pháp sau đây:

strcat(target, source)

Trong đó:

  • target là chuỗi đích
  • source là chuỗi dùng để nối vào chuỗi target

Hàm strcat() sẽ copy toàn bộ nội dung của chuỗi source, sau đó gán vào vị trí cuối cùng của chuỗi target và trả về kết quả là con trỏ của chuỗi kết quả.

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

Ví dụ cụ thể:



using

namespace

std

;


int

main

()

{

char

str1[

20

] =

"I Lov"

;

char

str2[

10

] =

"e You"

;


strcat

(str1, str2);

cout

<< str1;

}



Lưu ý khi sử dụng Hàm strcat(), chúng ta cần chỉ định kích thước chuỗi đích phải đủ lớn để có thể chứa được chuỗi nguồn được thêm vào nó, để tránh hiện tượng tràn bộ nhớ xảy ra.

Nối 2 chuỗi trong C++ với số lượng ký tự chỉ định| Hàm strncat()

Hàm strncat() trong C++ là một hàm có sẵn trong header file cstring, giúp chúng ta nối 2 chuỗi trong C++ lại với nhau với số lượng ký tự chỉ định.

Chúng ta sử dụng hàm strncat() để nối chuỗi trong C++ với cú pháp sau đây:

strncat(target, source, n)

Trong đó:

  • target là chuỗi đích
  • source là chuỗi dùng để nối
  • n là số ký tự tối đa được lấy ra từ đầu chuỗi source để nối vào chuỗi target

Hàm strncat() sẽ copy n ký tự tính từ đầu chuỗi source, sau đó gán chúng vào vị trí cuối cùng của chuỗi target và trả về kết quả là con trỏ của chuỗi kết quả.

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

Ví dụ cụ thể:



using

namespace

std

;


int

main

()

{

char

str1[

20

] =

"I Lov"

;

char

str2[

10

] =

"e You"

;


strncat

(str1, str2,

3

);

cout

<< str1;

}



Lưu ý là tương tự như với hàm strcat() thì khi sử dụng hàm strncat(), chúng ta cần chỉ định kích thước chuỗi đích phải đủ lớn để có thể chứa được chuỗi nguồn được thêm vào nó, để tránh hiện tượng tràn bộ nhớ xảy ra.

Nối nhiều chuỗi trong C++ | Hàm sprintf()

Ở phần trên chúng ta đã biết cách nối 2 chuỗi trong C++ rồi. Trong trường hợp chúng ta cần nối nhiều hơn 2 chuỗi, hãy sử dụng t ới hàm sprintf().

Hàm sprintf() trong C++ vốn là một hàm có sẵn trong header file cstring, giúp chúng ta tạo tạo một chuỗi đầu ra từ các biến với kiểu và định dạng khác nhau.

Trong trường hợp chỉ định các biến này là các chuỗi, chúng ta có thể nối nhiều chuỗi trong C++ lại và tạo thành một chuỗi mới thông qua hàm sprintf().

Cú pháp của hàm sprintf() để nối nhiều chuỗi trong C++ như sau:

sprintf (target, *format, srt1 , srt2 , …)

Trong đó

  • target là chuỗi đích
  • srt là các chuỗi dùng để nối vào chuỗi target
  • *format là chuỗi định dạng, là tập hợp các định dạng %s của các chuỗi str. Có bao nhiêu chuỗi str được chỉ định thì có bấy nhiêu định dạng tương ứng của chúng được viết bên trong chuỗi định dạng. Xem thêm: Định dạng nhập xuất trong C++.

Ví dụ cụ thể:



using

namespace

std

;


int

main

()

{

char

str1[

10

] =

"Hello"

;

char

str2[

10

] =

"C++"

;

char

str3[

10

] =

"World!"

;


char

target[

100

];


sprintf

(target,

"%s %s %s\n"

, str1, str2,str3);

cout

<< target;


return

0

;

}



Lưu ý là tương tự như với hàm strcat() và hàm strncat() thì khi sử dụng Hàm sprintf(), chúng ta cần chỉ định kích thước chuỗi đích phải đủ lớn để có thể chứa được chuỗi nguồn được thêm vào nó, để tránh hiện tượng tràn bộ nhớ xảy ra.

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn cách nối chuỗi trong C++ 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.