だから私は次のことをしています:
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番号を表示しようとすると、なぜガベージが発生するのかわからなくなっています。
たとえば、プログラムを2回実行した後、この出力を受け取ります
RIN 60
Networked rin: 1006632960
L5: loller cats 16375984
RIN 60
Networked rin: 1006632960
L5: loller cats 10260656
簡単なことだと思いますが、見えません。