strcpy 라이브러리 함수의 실현.strncpy 라이브러리 함수의 실현

1513 단어 c 언어
오늘 나는 코드를 다 쓴 후에strcpy라는 라이브러리 함수가 생각났다. 찾아보고 나서 조금 정리했다. 그리고 strcpyh 함수를 다시 한 번 쓰는 것도 연습을 하게 했다.
먼저strcpy 함수의 기능을 알아보자.strcpy는 src주소(원본)를'\0'으로 시작하고'\0'을 포함한 문자열을 dst주소(목적)로 복사한다.
구체적인 코드 보기
 
char *strcpy(char *dst,const char *src)
{
	char *d = dst;//       
	assert((dst != NULL) && (src != NULL));//  
	while(*dst++ = *src++)// dst            src      
	{					  //    ++      ++, \0,  \0 ASCII   0,  0     
		;
	}
	return d;
}

 
 
 
 
 
이것은 라이브러리 함수이니, 그럼 우리 시험해 보고, 자신의 주요 함수를 하나 쓰자
 
int main()
{
	char arr[20] = {0};
	strcpy(arr,"hello world");
	
	printf("%s",arr);
	return 0;
}

strncpy 라이브러리 함수의 실현
strncpy는strcpy의 기초 위에서 복사한 개수 n을 더하기 때문에 실현하기는 매우 간단하지만 주의해야 할 것은 다음과 같다.
만약 복사할 문자 수 n이 복사할 src의 문자 수보다 적으면 라이브러리 함수에'\0'이 붙지 않습니다.
만약 복사할 개수 n이 src 문자의 개수보다 크다면, 이때 '\0' 으로 복사하면 됩니다.
코드:
#include 
#include 
#include 

char* Strncpy(char* dst, char* src, size_t n)
{
	assert(dst != NULL || src != NULL);
	if (n >= strlen(src))
	{
		while (n&&(*dst++ = *src++) != '\0')
		{
			--n;
		}
	}
	else
	{
		while (n--)
		{
			*dst++ = *src++;
		}
		//*dst = '\0';
	}
	return dst;
}

코드에서 const 사용법:
 
const에 의해 수식된 것은 상수는 바꿀 수 없지만 포인터를 통해 내용을 수정할 수 있습니다.
손질 포인터는 변경할 수 없지만 포인터가 가리키는 내용은 변경할 수 있습니다.
 

좋은 웹페이지 즐겨찾기