<원형>
char *strcpy(char *destination, char *source);
함수 strcpy()는 source가 가리키고 널 문자를 포함하는 문자열을 destiation이 가리키는 곳으로 복사한다. 복귀 값은 새로운 문자열 destination 에 대한 포인터이다.
strcpy() 를 사용할 때는 우선 목적 문자열을 저장하기 위한 영역을 할당해야 한다.
함수는 destination이 이미 할당되어 있는 영역인지 알 수 없다. 메모리 영역이 할당되지 않았다면 함수는 destination에서부터 시작해서 strlen(source)만큼의 메모리 영역을 덮어쓸 것이다. 이것은 에상할 수 없는 문제를 일으킬 수 있다.
<code>
1 : #include <stdlib.h>
2 : #include <stdio.h>
3 : #include <string.h>
4 : char source[] = "The source string.";
5 : void main(){
6 : char dest1[80];
7 : char *dest2, *dest3;
8 : printf("\nsource : %s", source);
9 : strcpy(dest1, source);
10 : printf("\ndest1 : %s", dest1);
11 : dest2 = (char *)malloc(strlen(source)+1);
12 : strcpy(dest2, source);
13 : printf("\ndest2 : %s", dest2);
14 : strcpy(dest3, source);
15 : }
<result>
source : The source string.
dest1 : The source string.
dest2 : The source string.
6, 9번째 라인 : dest1이 80바이트의 할당된 공간을 지적하므로 dest1로의 복사는 정상적.
11번째 라인 : dest2로 복사하기 위해 공간을 할당해야 한다.
14번째 라인 : 대상 공간을 할당하지 않고 복사하는것은 좋지 않다. 심각한 문제를 일으킬 수 있다.
'Backend > C' 카테고리의 다른 글
문자열의 길이를 계산하는 두 가지 방법 (0) | 2012.04.12 |
---|---|
argc, argv를 이용한 간단한 사칙연산. (0) | 2012.04.12 |
파일을 여러 가지 모드로 열기 (0) | 2012.04.12 |
Hello, World! (0) | 2012.04.12 |
About C Language (0) | 2012.04.12 |