두 개의 char 포인터를 받고 다른 포인터의 내용을 다른 포인터로 복사 한 다음 포인터의 시작 부분을 반환하는 함수를 만들어야합니다. 나는 지금까지 2 시간 동안 이것을 어지럽 혀 왔고 모두 다른 100 가지 예를 읽었습니다. 여기에 내가 지금 가지고있는 것입니다 :포인터가 작동하지 않는 strcopy 함수
1
A
답변
2
dest++;
dest
포인터이며 이미 가리키는 dest
을 반환 할 때 그래서 src
에서 값을 복사하기 위해 그것을 이동 문자열의 끝으로.
이 포인터를 이동하지 마십시오. 색인을 사용하여 값을 복사하기 만하면됩니다. 당신이 *dest++
당신이 원하는 결과를 제공하지 않습니다 반환 무엇 dest++
에 고정 그래서 경우에도
int i=0;
while(*src)
{
dest[i] = *src;
i++;
src++;
}
dest[i] = '\0';
return dest;
.
4
0
이 두 라인 :
*src++;
*dest++;
가 있어야한다 :
src++;
dest++;
주의 코드는 포인터가 가리키는 것은 아닙니다 무엇 포인터를 증가 필요로 포인터없이 드 참조.
dest의 초기 값을 저장하면 반환 될 수 있으므로 좋은 생각입니다. 그리고 이미 dest 버퍼에있는 문자열 손실을 피하기 위해 dest의 값 (저장 후)이 dest + = strlen (dest)에 의해 증가되어야한다고 생각합니다.
그래서 dest에 초기 문자열을 오버레이하지 않고 두 문자열의 집중이 발생합니다.
이 함수가 호출되기 전에 dest 버퍼가 두 문자열 +1의 strlen()을 보유 할만큼 충분히 길다는 검사가 있어야합니다.
+1은 종료 바이트를 허용합니다.
포인터를 가리키는 포인터 대신 문자를 증가시키고 대상 문자열의 시작을 추적하지 못합니다. ** 먼저 간단한 연습을 해보십시오. ** – Beta
http://stackoverflow.com/questions/13460934/strcpy-using-pointers/26317153#26317153 –