2014-09-06 72 views
0

我有一個二進制文件,我需要解析某些字符串並設置一個指針。如何設置二進制文件中的字符串指針?

的數據是以下格式:

typedef struct{ 
int ID; 
int DataSize; 
void* Data; 
} 

所以在字節格式,

16 03 48 45 59 17 05 48 45 4C 4C 4F

ID - 16,數據尺寸= 3,字符串(0x48,0×45,0×59) - HEY

ID - 17,數據尺寸= 5,字符串(0x48,0×45,0x4C,0x4C,0x4F) - HELLO

我很難找出一種方法來將指針設置爲只指向HEY,並且沒有任何數據可以打印出來。我很確定我需要使用DataSize。我逐字節解析二進制文件。

回答

0

你不能用指針來做,因爲一個字符串需要以0字符結尾。

,但你可以做一個

strncpy(buffer, x.Data, x.DataSize); 
buffer[x.DataSize]='\0'; 
0

printf()實際上可以打印未結束的字符串。如果你不想複製你的數據,你可以爲你的數據準備一個單獨的格式字符串:

char format[20]; 
sprintf(format, "%%%ds\n", x.dataSize); 
printf(format, x.data); 
相關問題