Backend/C

strcpy()함수

petitCoding 2012. 4. 12. 10:19

<원형>

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