我想将 CAN 帧写入二进制文件,包括当前时间戳和 CAN ID,后跟 8 字节数据帧。我的程序中有以下内容,
fwrite("&tm->tm_mon+1", sizeof(tm->tm_mon+1),1,fptr);
fwrite("&tm->tm_mday", sizeof(tm->tm_mday+1),1,fptr);
fwrite("&tm->tm_hour", sizeof(tm->tm_hour+1),1,fptr);
fwrite("&tm->tm_sec", sizeof(tm->tm_sec+1),1,fptr);
fwrite("&frame_rd->can_id", sizeof(frame_rd->can_id),1,fptr);
fwrite("&frame_rd->data", sizeof(frame_rd->data),1,fptr);
这样做正确吗?任何人都可以帮我做这件事。提前致谢。
最佳答案
一些提示(不是完整的解决方案):
事实上,tm->tm_mon
是从零开始的,因此需要 +1
作为月份数字 jan...dec 才有意义,但这并不意味着您必须编写 sizeof(tm->tm_mon+1)
。
同样,如果你想写它的值并获取它的地址,这并不意味着你必须添加 1。想想你在做什么:你添加这个 1 什么 ??? (就像想想你要测量的尺寸一样。)
如果您想写入此值,则不要将像 printf
这样需要格式字符串(f
表示“打印格式”)的函数与 fwrite
(f
表示文件写入)。因此,您不需要提供包含要写入内容的格式字符串,而只需提供需要写入内容的地址。当然,没有任何+1(你会将这个1添加到什么?)
通过这些提示,我希望您能找到答案。请记住,如果没有帮助,请阅读手册!
关于c - 如何使用C将数据写入二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49652485/