将时间转换为格式化字符串;结果被截断
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
的文档。
我需要将 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
的文档。