所以我有以下内容:
char * buffer = (char *) malloc(2*80 + 4);
uint32_t networkedRin = htonl(student->rin);
printf("RIN %u\n", student->rin);
//Clear all memory and copy the first last and rin into the new buffer
memset(buffer, '\0', 164);
memcpy(buffer, student->firstname, 80);
memcpy(buffer+80, student->lastname, 80);
memcpy(buffer+160, &networkedRin, 4);
printf("Networked rin: %u\n", networkedRin);
printf("L5: %s %s %u\n", buffer, buffer+80, buffer+160);
我很困惑,因为当我最后打印时,预期值与之前打印的 Networked rin 值相同,但事实并非如此,实际上它是垃圾,因为它在每次运行时都在不断变化。现在我知道我应该使用 sizeof 或其他任何东西,但我们被告知只对 uint32 使用硬编码值 4 而不是。我不知道为什么在尝试显示缓冲区中的联网 rin 号时会出现垃圾。
例如,我在两次运行程序后收到此输出
RIN 60
Networked rin: 1006632960
L5: loller cats 16375984
RIN 60
Networked rin: 1006632960
L5: loller cats 10260656
我确定它很简单,但我就是看不到它。