因此,我有以下几点:的memcpy整数缓冲
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);
,我感到非常困惑,因为当我做印刷在年底的预期值是网络RIN值相同此前打印,但它不是,实际上它的垃圾是因为它随着每次运行而不断变化。现在我知道我应该使用sizeof或其他什么,但是我们被告知只使用4的硬编码值作为uint32,而不是。我试图从缓冲区中显示联网的rin号码时,为什么我会发生垃圾。
比如我的程序
RIN 60
Networked rin: 1006632960
L5: loller cats 16375984
RIN 60
Networked rin: 1006632960
L5: loller cats 10260656
两个运行后收到此输出我敢肯定它的东西简单,但我就是不能看到它。
嗯,因为这是如何所有C我不能真的不知道为什么我用C++标记我只是习惯于在C++项目上工作我做过但是没有新的在这里。 – csteifel 2013-02-11 18:44:37
这解释了* lot *。我将放弃该评论。谢谢。 – WhozCraig 2013-02-11 19:28:40