将时间转换为格式化字符串;结果被截断

Convert time to formatted string; result is truncated

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

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/

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

有关详细信息,请参阅 strftime 的文档。