我试图弄清楚如何将包含另一个结构的结构的值写入文件。这是我正在使用的代码:
/*header1.h*/
typedef struct _struct1 {
double valid;
double id;
double timestamp;
}STRUCT1;
/*header2.h*/
#define HEADDER 1
#define TOFILE 1
typedef struct _struct2 {
STRUCT1 track[10];
}STRUCT2;
/* main.c */
findData (double timestamp)
{
int i;
STRUCT2 inData;
for(i=0; i<6; i++)
{
inData.track[i].valid = 1.0;
inData.track[i].id = 2.0;
inData.track[i].timestamp = 1234.5;
}
dataRouter(TOFILE, &inData, sizeof(STRUCT2), (void *)HEADDER);
}
/*dataRouter.c*/
void dataRouter( int type, void *data, int size, void *args)
{
switch (type)
{
case TOFILE: sendFile(data, size, (int *) args); break;
}
}
void sendFile (void *data, int size, int args)
{
switch (args)
{
case 1:
head = "idx1";
break;
}
//somehow print all the values for track[]
//"head, track[i].valid, track[i].id, track[i].timestamp"
}
我对如何将“void *data”(即“&data”)转换为可以通过使用 for 循环进行迭代并打印到文件的变量或数据结构感到困惑。
注意:我正在嵌入式环境中工作,库空间有限,因此我尝试使用标准 C 库。
任何建议或引用,我们将不胜感激。
谢谢!
最佳答案
如果sendFile
需要做的就是将data
指向的内容写入文件,只需将指针和大小传递给write
:
write(fd, data, size);
您将执行类似的操作来从磁盘读回。
关于c - 在 C 中将多维结构体值写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32316976/