c - 在 C 中将多维结构体值写入文件

标签 c struct printf

我试图弄清楚如何将包含另一个结构的结构的值写入文件。这是我正在使用的代码:

/*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/

相关文章:

c - Hook 类似 Printf 的函数并修改输出

c - 如何使用 printf 格式化 unsigned long long int?

c - printf 如何改变我的代码的输出

c - 结构数组中的 strstr 字符数组

c - 读取 P6 二进制 ppm 文件

c - 如果一个结构同时定义了它的 uint16_t 字和 uint8_t 字节,则数组的大小加倍

比较一个整数和一个变量的地址

c - 切换到特定窗口

c - 开放迷宫 - 深度优先搜索

c - 如何设置动态内存和临时缓冲区?