숙제를 위해 string.h 라이브러리 (2fun2handle)의 22 개 함수를 모두 구현해야합니다. 나는 많은 함수를 사용했지만 strcpy를 구현하려고 할 때 약간의 문제가 발생한다. C에서 strcpy를 구현할 때의 문제
char *new_strcpy(char *dest, const char *src){
char *copy = (char *) src;
for(; *copy != '\0'; ++copy, ++dest)
*dest = *copy;
return dest;
}
내가이 잘 작동 것이라고 생각 :
적지 개정 한 후, 여기에 기능에 나의 시도이다. 이 같은 간단한 예제를 수행하여 내 코드를 테스트 할 때, :
char src[50], dest[50];
new_strcpy(src, "src");
new_strcpy(dest, "dest");
printf("dest: %s\n", dest);
printf("src: %s\n", src);
내 출력은 다음과 같이 찾고 끝 :
dest: dest$
src: src$$$$
그냥 같이해야하는 경우 :
dest: dest
src: src
이 함수를 구현하기 전에, 문제없이 포인터를 사용하여 src 문자열을 dest 문자열에 복사했습니다. 그래서 왜 이런 일이 발생하는지 잘 모르겠습니다. 내가 잘못하고있는 것이 명백한가요? 또한
당신은 아니야 널 종료 대상을 - 루프 휴식과 당신을 위해 널 (null)을 절대로 복사하지 마십시오. – Katie
루프 이후에 명시 적으로 또는 do ... while을 사용하여 문자열을 널 종료해야합니다. 'strcpy'는'dest'의 (초기 값)을 반환합니다. 포인터를'dest' 문자열의 끝으로 되돌립니다 (더 유용한 반환 값이 될 수도 있습니다). –
정말 질문에 대답하지 않지만 strcpy의이 방법은 정말 멋지다. while (* dest ++ = * srC++); – Atuos