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"));
'컴퓨터 > 프로그래밍' 카테고리의 다른 글
C언어 길이를 지정하여 두 개의 문자열 합침 함수 strncat() (0) | 2020.03.15 |
---|---|
C언어 시그널 집합에 모든 시그널 정보 추가 함수 sigfillset() (2) | 2020.03.15 |
C언어 시그널 집합에 시그널이 있는지 확인 함수 sigismember() (0) | 2020.03.15 |