如何使用C将日期和时间传递给结构变量

时间:2018-04-05 11:48:23

标签: c linux struct

我有一个名为

的结构
struct binary
{
  uint32_t time;
  uint16_t id;
  uint8_t data[8];
};

在我读取CAN帧的函数中,我有一个名为bin的结构变量。

struct binary bin;

当我为我的结构分配时间时如下

bin.time = tm-> tm_mon+1"."tm->tm_mday"_"tm->tm_hour":"tm->tm_min":"tm->tm_sec;

它显示错误消息

error:expected ';' before string constant 
bin.time = tm-> tm_mon+1"."tm->tm_mday"_"tm->tm_hour":"tm->tm_min":"tm->tm_sec;

如何将时间传递给结构成员时间以后我想在我的fwrite函数中使用以下结构,如下所示:

fwrite(&bin,sizeof(bin),1,fPtr);

提前致谢。

2 个答案:

答案 0 :(得分:1)

  

当我为我的结构分配时间时如下

// bin.time is a uint32_t
bin.time = tm-> tm_mon+1"."tm->tm_mday"_"tm->tm_hour":"tm->tm_min":"tm->tm_sec;

当然,这意味着将struct tm保存为time_t

如果tm本地时间,请使用

#include <stdint.h>
#include <time.h>

time_t t = mktime(tm);
if (t == (time_t)-1) {
  Handle_conversion_failure();
}
if (t < 0 || t > UINT32_MAX) {
  Handle_range_failure();
}
bin.time = (uint32_t) t;

答案 1 :(得分:0)

这句话错了: -

package

要存储上述值,您必须将时间更改为如下字符串: -

bin.time = tm-> tm_mon+1"."tm->tm_mday"_"tm->tm_hour":"tm->tm_min":"tm->tm_sec;

现在在代码中: -

char time[30];//uint32_t time; As you are new to C I ma not using a char pointer here.