3
일부 네트워크 코드에서 소켓을 통해 (2)를 보내려면 버퍼에 패킷 구조를 인코딩해야하지만 더 큰 버퍼에 인코딩 된 버퍼를 memcpy'ing하면 문제가있는 것 같습니다. 여기에 내가 뭐하는 거지 설명하는 작은 코드 예제 :C memcpy를 사용하여 문자열 연결을 추가하지 않음
char tbuf[] = "test";
char *buf = malloc(300);
memset(buf, '\0', 300);
int bytes_to_copy = 300;
int bytes_copied = 0;
while (bytes_copied < bytes_to_copy) {
memcpy(buf + bytes_copied, tbuf, sizeof(tbuf));
bytes_copied += sizeof(tbuf);
}
/* free, return */
이 60 배 단 하나의 "테스트"를 포함하는 끝 버피 버피 만에 "테스트"를 추가해야한다. memcpy를 잘못 사용하고 있습니까?
memcpy (buf + bytes_copied, tbuf, sizeof (tbuf) - 1); – yrmt
이것은 nul 터미네이터를 포함하지 않지만 여전히 동일한 문제가 있기 때문에 작동합니다. – yrmt
'bytes_copied'를 증가시키는 다음 줄을 잊지 마십시오. – Elyasin