본문 바로가기

언어/C언어 - 300제

057 - 문자열 복사하기(strcpy)

=================================================
#include <stdio.h>
#include <string.h>

int main(void)
{
        char str[100];
        char* string=str;

        strcpy(string,"kangdeokhun");

        printf("%s\n",str);

        return 0;
}
=================================================

char* strcpy(char* dest, const char* src);

strcpy 함수의 두 인수는 다른 형을 가진다.
첫번째 인수 dest는 char 포인터형 변수이고,
두번째 인수 src는 char 포인터형 상수이다.
여기서 중요한 점은 dest 인수로 char형 상수, 초기화 되지 않은 포인터형 변수를 받을 경우
컴파일 시에는 에러가 발생 하지 않지만, 실행시 에러가 발생한다.
왜냐하면 인수 dest로 받은 값은 내부에서 변경이 가능하기 때문이다.
(함수 내부에서 포인터 변수 값인 주소가 바뀐다는 의미)
참고 : strcpy는 dest의 주소를 return 한다.