首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C/C++中的非固定结构

C/C++中的非固定结构
EN

Stack Overflow用户
提问于 2012-08-25 19:38:36
回答 6查看 362关注 0票数 1

我有一个叫TOWRITE的建筑。我想把结构的内容写到一个文件中.但有一件事是结构成员的大小是不固定的。它取决于从其他来源收到的数据。有没有可能用一种简单的方式写出结构。请参考下面的代码片段。

谢谢

代码语言:javascript
运行
复制
typedef struct TOWRITE
{
   DWORD dwHeader;
   WORD datacount;
   LPBYTE lpData;
   WORD checksum;
}

TOWRITE towrite;
ZeroMemory( &towrite, sizeof( TOWRITE ));
towrite.lpData = (LPBYTE) new BYTE[256];

towrite.dwHeader = 0xF1F1E1E1;
towrite.datacount = 256;
towrite.cheksum = 3849;
CopyMemory( towrite.lpData, szTemp, 256 );

.....

.....

.....

f.write( (LPBYTE)&towrite, sizeof(TOWRITE) );
....
....
....
....
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-08-25 20:11:51

我只是修改了我的代码

代码语言:javascript
运行
复制
typedef struct TOWRITE
{
 DWORD dwHeader;
 WORD datacount;
}

TOWRITE towrite;
LPBYTE lpData;
WORD checksum;

ZeroMemory( &towrite, sizeof( TOWRITE ));
lpData = (LPBYTE) new BYTE[256];

towrite.dwHeader = 0xF1F1E1E1;
towrite.datacount = 256;
cheksum = 3849;
CopyMemory( lpData, szTemp, 256 );

.....

.....

.....

f.write( (LPBYTE)&towrite, sizeof(TOWRITE) );
f.write( (LPBYTE)&lpData, datacount );
f.write( (LPBYTE)&checksum, 2 );
....
....
....
....
票数 0
EN

Stack Overflow用户

发布于 2012-08-25 19:52:19

代码语言:javascript
运行
复制
typedef struct TOWRITE
{
   DWORD dwHeader;
   WORD datacount;
   WORD checksum;
   LPBYTE lpData; //Put the ptr at the end
}

// - sizeof(LPBYTE) avoid the ptr @ to be written
f.write( (LPBYTE)&towrite, sizeof(TOWRITE) - sizeof(LPBYTE));  

// write the ptr data.
// sorry I don't know windows C.
// fix the size of the array element :)
f.write( towrite.lpData, towrite.datacount * sizeof(????));  
票数 4
EN

Stack Overflow用户

发布于 2012-08-25 19:44:18

您可以尝试使用tpl库:http://tpl.sourceforge.net/

Tpl是一个用于序列化C数据的库。数据以其自然的二进制形式存储。API很小,并且试图保持“不碍事”。与使用XML相比,在C程序中使用tpl更快、更容易。Tpl可以序列化许多C数据类型,包括结构。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12121602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档