다음 코드에서는 길이가 7 바이트 인 버퍼를 만들고 버퍼에 char 배열과 함께 네트워크 바이트 순서로 정수를 넣으려고합니다. 내 sprintf()
버퍼의 끝에서 Null 문자가 없어야하므로 memcpy()
을 사용하여 7 바이트 만 복사합니다. 그러나, 나는 memcpy()
이후 다른 버퍼를 받고있는 것 같습니다.memmove가 버퍼의 모든 내용을 복사하지 않음 - C
코드 :
int num = 1234;
char *dummy = "bla";
int dummy_len = strlen(dummy);
int buffer_len = sizeof(int) + dummy_len;
char *buffer = malloc(buffer_len);
char *temp_buf = malloc(buffer_len);
size_t len = buffer_len;
sprintf(temp_buf, "%d%s",htonl(num),dummy); //preparing the temp_buf
memmove(buffer, temp_buf, len);
printf("sizeof(temp_buf) = %d and sizeof(buffer) = %d\n",sizeof(temp_buf), sizeof(buffer));
printf("printing buffer = %s and temp_buf = %s\n", buffer,temp_buf);
나는 다음과 같은 출력을 받고 있어요 :
sizeof(temp_buf) = 4 and sizeof(buffer) = 4
printing buffer = -771489 and temp_buf = -771489792bla
예, 올바르게 작동합니다. 테스트 해 보았습니다. –