사용법
1 2 3 4 | #include <string.h> char *strcpy(char *dest, const char *src); char *strncpy(char *dest, const char *src, size_t n); | cs |
설명
src 가 가리키는 문자열을 dest 가 가리키는 배열에 복사한다. src에서 복사될 때 '\0'까지 복사됨으로 문자열이 겹쳐지지는 않는다. 이때 dest는 src를 모두 복사 받을 수 있을 정도로 충분히 커야 한다.
strcpy()는 목적지의 배열의 크기가 충분히 크지 않을 경우 어떤 일이 발생될지 알 수가 없다.
예를 들어 버퍼 오버 플로 기법에 매우 취약하다. strcpy()를 쓰기 전에는 반드시 복사할 문자열의 크기를 검사하거나 strncpy()를 써야 한다.
strncpy()는 문자열의 크기를 정할 수 있으므로 버퍼 오버 플로에 좀 더 안전하다.
주의할 점은 strncpy 함수는 null 문자를 추가하지 않기 때문에 buffer 크기-1만큼을 주어야 한다.
만약 src의 길이가 n 보다 작다면 dest의 남는 공간은 null로 채워진다.
예제
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <stdio.h> #include <string.h> int main(void) { char buf[20]; strcpy(buf, "buffer overflow"); printf("%s\n", buf); strncpy(buf, "buffer overflow", sizeof(buf)-1; printf("%s\n", buf); } | cs |
'programming Language > [C] 함수정리' 카테고리의 다른 글
[strcat&strncat] (0) | 2016.01.09 |
---|
WRITTEN BY
,