如何在二进制文件中设置指向字符串的指针?

时间:2014-09-06 20:24:46

标签: c parsing binary ascii decode

我有一个二进制文件,我需要解析某些字符串并设置指针。

数据采用以下格式:

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一些方法。我正在逐字节地解析二进制文件。

2 个答案:

答案 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);
相关问题