因此,我有以下幾點:的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