首页 > 解决方案 > 将时间转换为格式化字符串;结果被截断

问题描述

我需要将变量转换为DD/MM/YYYY/HH:mmtime_t格式的字符串。我做了以下功能。

int time_to_str(time_t value, char *string)
{
    struct tm *timeinfo;
    time(&value);
    timeinfo = localtime(&value);

    strftime(string, sizeof(string), "%d/%m/%Y/%H:%M", timeinfo);
}

使用以下方法测试功能:

time_t variable = time(NULL);
char buffer[100];

time_to_str(variable, buffer);

printf("%s", buffer);

我得到以下输出,但我没有看到问题......有什么想法吗?

07/10/

标签: ctime.h

解决方案


的第二个参数strftime应该是要写入的缓冲区的大小,在这种情况下为 100。sizeof(string)导致指向 char 的指针的大小,通常为 4 或 8。因此,strftime只将几个字符写入string缓冲区。

有关详细信息,请参阅strftime.


推荐阅读