본문으로 바로가기
homeimage
  1. Home
  2. 컴퓨터/프로그래밍
  3. C언어 두개의 문자열을 합침 함수 strcat()

C언어 두개의 문자열을 합침 함수 strcat()

· 댓글개 · 바다야크

C함수 두개의 문자열을 합침 strcat()

2개의 문자열 인수를 받아서 1개의 문자열로 합칩니다.

주의해야할 점

은 합쳐진 문자열을 첫 번째 인수의 포인터 배열에 저장된다는 것입니다. 그러므로 첫 번째 인수의 포이터나 배열은 합쳐진 문자열 크기만큼 메모리를 확보해야 합니다. strcat()는 첫번째 인수의 메모리에서 '\0'을 찾아 그 부분부터 2번째 인수의 문자열을 복사하므로 주의해야 합니다.

  • 헤더: string.h
  • 형태: char * strcat( char *dest, const char *src)
  • 인수: char *dest 연결될 문자열
    char *src 복사할 문자열
  • 반환: 2개의 문자열이 합쳐진 문자열 위치를 반환. 즉, 첫 번째 인수 문자열 포인터

C언어 strcat() 함수 예제

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

int main( void)
{
   char  str[50] = "badayak";
                     
   strcat( str, ".com");           
   printf( "%s\n", str);
   return 0;
}

C언어 strcat() 예제 실행 결과

]$ ./a.out
badayak.com
]$

주의

위의 예제에서는 "badayak" 문자열의 변수가 50byte로 ".com" 합쳐져도 공간이 충분합니다. 만일 아래의 예처럼 첫 번째 인수가 충분한 공간을 잡아 두지 않는다면 어떻게 될까요?

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

int main( void)
{
   char  str[] = "badayak";
                     
   strcat( str, ".com");           
   printf( "%s\n", str);
   return 0;
}

실행 결과

]$ ./a.out
badayak.com
*** stack smashing detected ***: ./a.out terminated
중지됨 (core dumped)
]$

참고

이미 알고 있는 첫 번째 포인터를 왜 반환할까요? 그것은 아래와 같이 함수 호출과 함께 문자열로 처리할 수 있기 때문입니다.

strcat( str, ".com");           
printf( "%s\n", str);

   이 코드를 아래처럼 처리할 수 있습니다.

printf( "%s\n", strcat( str, ".com"));
SNS 공유하기
💬 댓글 개
최근글
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.