본문 바로가기

Programming/Algorithm

[C언어] assign 연산자의 return 값을 활용한 string copy 함수 만들기

assign 연산자는 variable 에 값을 assign 할 뿐만 아니라 값을 return 한다. 

assing 연산자가 return한느 값은 바로 assign 한 값이다. (Rvalue, Right-Hand Side Value)

 

따라서 문자열 복사 ( string copy ) 함수를 C언어에서 다음처럼 구현할 수 있음.

#include <stdio.h>

void str_copy(char* s, char*d){
	while((*d++=*s++)!=0);
}

void main(void)
{
	char a[5];
	char b[5] = "ABCD";
	str_copy(a, b);
	printf("%s\n%s\n", a, b);
}

1)  str_copy 함수는 source 문자열과 destination 문자열의 시작 주소를 s랑 d라는 포인터로 받음

2) *d++ = *s++ 의 의미는 

      i) *d = *s 로 포인터가 가리키는 곳의 값을 assign 한 다음 

      ii) d와 s 포인터를 증가  (d++, s++)

3) *d = *s 에서, 포인터 s가 가리키는 주소의 값 *s 가 null 이었다면 while 문 조건이 거짓이 되어 

    loop를 빠져 나온다.  

 

따라서 위 코드는 문자열 s를 d로 null 까지 복사함.