将结构复制到char缓冲区

时间:2012-11-25 10:43:21

标签: c

#include <stdio.h>
#include <time.h>

int main ()
{
   time_t  time_raw_format;
   struct tm * ptr_time;
   char *buff;
   time ( &time_raw_format);
   ptr_time = localtime ( &time_raw_format );
}

如何将其复制到*buff,返回类型ptr_timestruct tm*,我的实际目标是将系统日期和时间复制到char缓冲区以及如何计算大小由localtime返回,因为*ptr_time是一个指针,如果我sizeof我得到的值为4

3 个答案:

答案 0 :(得分:1)

如果您正在寻找如何将人类可读时间放在字符串中,这是一个解决方案:

#include <time.h>

char *buff = asctime(ptr_time);

buff的内存由ctimeasctime静态分配。

答案 1 :(得分:0)

如果理解正确,您希望将struct tm转换为字符串,请使用strftime()

char buf[200];
strftime(buf, sizeof(buf), "%c", ptr_time);

答案 2 :(得分:0)

您可以使用strftime()

将时间格式化为char缓冲区
char buff[20];
strftime(buff, sizeof(buf), "%Y-%m-%d %H:%M", ptr_time);

ptr_time是一个指针,*ptr_time正在取消引用指针。 sizeof(ptr_time)在32位系统上给出值4。 struct tm的大小为sizeof(struct tm)sizeof(*ptr_time),它给出了指针所指向的大小。