본문 바로가기
IT/c언어

C 언어 strcat strncat 함수

by 뉴코딩맨 2023. 7. 18.

C 언어에서는 문자열을 다루는 데에 사용되는 여러 함수들이 제공됩니다. 그 중 strcat과 strncat 함수는 문자열을 결합(Concatenate)하는 데에 사용되는 함수입니다. strcat과 strncat 함수의 사용 방법과 예제에 대해 알아보겠습니다.

 

 

strcat 함수

strcat 함수는 두 개의 문자열을 결합하여 하나의 문자열로 만드는 함수입니다. 다음은 strcat 함수의 사용 예제입니다.

 

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

int main() {
   char str1[100] = "Hello, ";
   char str2[] = "world!";
   
   strcat(str1, str2);

   printf("결합된 문자열: %s\n", str1);

   return 0;
}
 
위의 예제에서 strcat 함수는 str1과 str2를 결합하여 str1에 저장합니다. 따라서 "Hello, world!"가 str1에 저장되고, 프로그램을 실행하면 "결합된 문자열: Hello, world!"가 출력됩니다.
 
strcat 함수의 형식은 다음과 같습니다.
 
char* strcat(char* destination, const char* source);
 
첫 번째 인수인 destination은 결합된 문자열이 저장될 배열을 가리키는 포인터입니다. 두 번째 인수인 source는 결합할 문자열을 가리키는 포인터입니다. strcat 함수는 결합된 문자열의 시작을 가리키는 포인터를 반환합니다.
 
 

strncat 함수

strncat 함수는 strcat 함수와 유사하지만, 결합할 문자열의 최대 길이를 명시적으로 지정할 수 있습니다. 다음은 strncat 함수의 사용 예제입니다.
 
#include <stdio.h>
#include <string.h>

int main() {
   char str1[100] = "Hello, ";
   char str2[] = "world!";
   
   strncat(str1, str2, 3);

   printf("결합된 문자열: %s\n", str1);

   return 0;
}
 
위의 예제에서 strncat 함수는 str1과 str2를 결합하지만, str2의 처음 3개 문자만을 str1에 추가합니다. 따라서 "Hello, wor"가 str1에 저장되고, 프로그램을 실행하면 "결합된 문자열: Hello, wor"가 출력됩니다.
 
strncat 함수의 형식은 다음과 같습니다.
 
char* strncat(char* destination, const char* source, size_t num);
 
첫 번째 인수인 destination은 결합된 문자열이 저장될 배열을 가리키는 포인터입니다. 두 번째 인수인 source는 결합할 문자열을 가리키는 포인터입니다. 세 번째 인수인 num은 결합할 최대 문자 개수를 지정합니다. strncat 함수는 결합된 문자열의 시작을 가리키는 포인터를 반환합니다.
 

주의 사항

strcat과 strncat 함수를 사용할 때 주의해야 할 사항이 있습니다.
 
버퍼 오버플로우를 방지해야 합니다. strcat과 strncat 함수는 결합된 문자열을 저장할 배열의 크기를 확인하지 않습니다. 따라서 결합된 문자열이 저장될 배열의 크기가 충분히 커야 하며, 버퍼 오버플로우를 방지하기 위해 문자열의 최대 길이를 지정하는 것이 좋습니다.
 
널 종료 문자를 처리해야 합니다: strcat과 strncat 함수는 결합된 문자열의 끝에 널 종료 문자를 추가하지 않습니다. 따라서 결합된 문자열을 사용하기 전에 반드시 널 종료 문자를 추가해야 합니다.
 

결론

C 언어에서의 strcat과 strncat 함수는 문자열을 결합하는 데에 사용되는 함수입니다. strcat 함수는 두 개의 문자열을 전체적으로 결합하며, strncat 함수는 결합할 문자 개수를 지정하여 문자열을 결합합니다. 문자열을 결합할 때는 버퍼 오버플로우를 방지하고, 널 종료 문자를 처리해야 합니다.
 

'IT > c언어' 카테고리의 다른 글

C 언어 atoi atof 함수  (0) 2023.07.18
C 언어 strcmp strncmp 함수  (0) 2023.07.18
C 언어 strcpy strncpy 함수  (0) 2023.07.17
C 언어 strlen 함수  (0) 2023.07.17
C 언어 fflush 함수  (0) 2023.07.17

댓글