我有一个二进制文件,我需要解析某些字符串并设置指针。
数据采用以下格式:
typedef struct{
int ID;
int DataSize;
void* Data;
}
所以以字节格式,
16 03 48 45 59 17 05 48 45 4C 4C 4F
ID - 16,DataSize = 3,String(0x48,0x45,0x59) - HEY
ID - 17,DataSize = 5,字符串(0x48,0x45,0x4C,0x4C,0x4F) - HELLO
我无法找到一种方法来设置指针只指向HEY而没有数据,以便我可以打印出来。我很确定我需要使用DataSize一些方法。我正在逐字节地解析二进制文件。
答案 0 :(得分:0)
你不能用指针做,因为字符串需要以0字符结尾。
但你可以做一个
strncpy(buffer, x.Data, x.DataSize);
buffer[x.DataSize]='\0';
答案 1 :(得分:0)
printf()
实际上可以打印未终止的字符串。如果您不想复制数据,可以为数据准备单独的格式字符串:
char format[20];
sprintf(format, "%%%ds\n", x.dataSize);
printf(format, x.data);