char *ft_strcpy(char *dest, char *src)
{
int i;
i = 0;
while (src[i])
{
dest[i] = src[i];
i++;
}
return (dest);
}
int main(void)
{
char *src;
char dest[20];
src = "Hello World!";
ft_strcpy(dest, src);
return 0;
}
char형 변수를 포인터 변수로 사용하면 문자열을 '선언' 할 수 있다. C언어에서 동적할당을 이용하지 않는 이상 크기가 변할 수 있는 변수는 사용할 수 없다. 따라서 src는 "Hello World!"를 선언했기 때문에 문제되지 않지만, dest를 포인터변수로 사용하여 ft_strcpy의 결과값을 얻는다면 컴파일 에러가 날 것이다.
위와 같은 구조로 저장되어있다고 생각하면 편하다. 포인터 변수 *str과 dest의 첫 번째 주소를 넘겨주어 인덱스 값을 넘기며 dest[i]에 str[i]를 복사해주고 dest[i]의 마지막에 '\0' NULL값을 넣고 dest의 첫 번째 주소를 반환한다.
C언어에서 배열의 이름은 해당 배열의 첫 번째 주소를 의미하기도 한다.
strncpy
<string.h> 헤더파일의 함수로, string n copy, 원본의 문자열에서 n개만 뽑아서 사용한다는 의미이다.