반응형
strcpy 함수 구현 코드
char *strcpy(char *dest, char *src)
{
int i;
i = 0;
while (src[i])
{
dest[i] = src[i];
i++;
}
dest[i] = src[i]; //'\0'
return (dest);
}
strcpy 함수 : dest 문자열에 src 문자열을 복사 해 넣는 함수
src : 복사할 문자열
dest : 붙여넣을 문자열
while 문을 해석하자면,
src[0]에서부터 마지막 문자까지 한 문자씩 dest[i]에 복사된다.
while 문은 조건이 null일때 종료되고,
src 문자열의 마지막에는 항상 '\0'인 null 문자가 있기 때문에
마지막 문자까지만 복사가 되고 while 문이 종료된다.
여기서 끝이 아니라, dest 문자열의 끝을 알려주는 '\0' 이 필요하다.
while 문이 끝난 시점에서의 src[i]는 '\0'을 담고 있으므로 그걸 dest[i]에 똑같이 넣어 준 것이다.
이 때 그냥 dest[i] = '\0' 이라고 직접 넣어주어도 무관하다.
반응형
strncpy함수 구현 코드
char *strncpy(char *dest, char *src, unsigned int n)
{
unsigned int i;
i = 0;
while ((src[i] != '\0') && (i < n)) // (src[i] && (i < n)) 도 무관
{
dest[i] = src[i];
i++;
}
while (i < n)
{
dest[i] = '\0';
i++;
}
return (dest);
}
strncpy 함수 : dest 문자열에 src 문자열을 n의 길이만큼 복사 해 넣는 함수
src : 복사할 문자열
dest : 붙여넣을 문자열
n : 복사할 문자열의 길이
전체적인 코드의 흐름은 위의 strcpy 함수와 거의 비슷하다.
다른 점은,
while 문에서 (i < n) 조건을 추가해줌으로써 n 만큼만 반복문이 실행되도록 하는 것이다.
두 번째 while 문을 쓴 이유는
n이 src 문자열의 길이보다 더 클 때,
남은 길이만큼 널문자로 채우기 위해서이다.
반응형
'언어 > C | C++' 카테고리의 다른 글
[C언어/초보를위한] 문자열을 붙이는 strcat, strncat 함수 구현하기 (3) | 2022.09.19 |
---|---|
[C언어/초보를위한] 몫, 나머지를 구하여 포인터로 담는 div, mod 함수 구현하기 / 왜 포인터를 쓸까? (0) | 2022.05.29 |
[C언어/초보를위한] 정수의 배열을 뒤집는 함수 구현하기 (0) | 2022.01.27 |
[C언어/초보를위한] 문자열의 길이를 반환하는 strlen 함수 구현하기 (0) | 2022.01.27 |
[C언어/초보를위한] 문자열을 출력하는 putstr 함수 구현하기 (0) | 2022.01.27 |
댓글