【问题标题】:Convert time to formatted string; result is truncated将时间转换为格式化字符串;结果被截断
【发布时间】:2021-10-07 16:52:55
【问题描述】:

我需要将 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/

【问题讨论】:

  • sizeof(string) 在任何现代 PC 上始终为 4 或 8(取决于您编译为 32 位还是 64 位),所以这显然是错误的
  • 是的,您需要将其作为附加函数参数传递。该函数也不会根据需要返回任何int 值。
  • 啊对了,其实是想在这里用宏,不知道怎么弄的,谢谢。

标签: c time.h


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    相关资源
    最近更新 更多