사용범위
Windows, Unix 등 모든 OS에서 사용 가능한 표준 API 함수
기능
C언어 표준 함수로 문자열에 문자열을 연결할때 사용한다.
헤더
#include <string.h>
※ strcat 함수 사용시 string.h 파일을 include 하지 않는다면 컴파일 시 error 발생 ※
함수
char* strcat(char* dest, const char* source);
파라미터
- char* dest
- 연결(변경)하려는 target string 버퍼를 입력한다.
- 반드시 NULL 문자로 종료되어야 한다.
- const char* source
- dest 에 연결할 string 을 입력한다.
- 반드시 NULL 문자로 종료되어야 한다.
반환값 (return)
dest 에 source 를 연결한 이후 연결된 string 버퍼인 dest 를 반환한다.
잡학지식
strcat(dest, source) 함수에서 dest + source 의 결과가 dest 에 저장되므로 dest 의 버퍼 크기가 확보되어야 한다. [dest 의 string 길이 + source 의 string 길이]
그렇지 않으면 buffer overflow 버그로 인해 예상하지 못한 결과가 나올 수 있다. (sigsegv 라던지 ..)
따라서 source 의 string 길이의 최댓값을 예측할 수 없는 경우 strncat 함수 사용을 권장한다.
<소스 코드>
#include <stdio.h>
#include <string.h>
#define MAX_BUF_SIZE 128
int main() {
char buffer1[MAX_BUF_SIZE] = "Hello";
char buffer2[32] = " strcat !";
char* ret;
printf("(Before Data) buffer1[%s] buffer2[%s]\n", buffer1, buffer2);
ret = strcat(buffer1, buffer2);
printf("(Address) ret[%p] buffer1[%p]\n", ret, buffer1);
printf("(After Data) buffer1[%s] buffer[%s]\n", buffer1, buffer2);
return 0;
}
※ 실행 결과
(Before Data) buffer1[Hello] buffer2[ strcat !]
(Address) ret[000000000061FD50] buffer1[000000000061FD50]
(After Data) buffer1[Hello strcat !] buffer[ strcat !]
반응형
'C언어 > string.h' 카테고리의 다른 글
[C언어] memcpy 함수 (메모리 복사) (1) | 2022.09.19 |
---|---|
[C언어] memccpy 함수 (특정 문자까지만 메모리 복사) (1) | 2022.09.16 |
[C언어] strlen 함수 (문자열 길이 확인 함수) (0) | 2022.09.14 |
[C언어] strstr 함수 (문자열 검색 함수) (8) | 2022.09.14 |
[C언어] strcmp 함수 (문자열 비교 함수) (2) | 2022.09.13 |