gpt4 book ai didi

c - 时间进入字符串与 HH :MM:SS format (C-programming)

转载 作者:太空狗 更新时间:2023-10-29 17:16:18 27 4
gpt4 key购买 nike

我需要将当前时间以“HH:MM:SS”格式获取到一个字符数组(字符串)中,这样我以后就可以简单地使用 printf("%s", timeString) 输出结果;

我对 timevaltime_t 类型很困惑,所以任何解释都很棒:)

编辑:所以我尝试了 strftime 等,它有点管用。这是我的代码:

time_t current_time;
struct tm * time_info;
char timeString[8];

time(&current_time);
time_info = localtime(&current_time);

strftime(timeString, 8, "%H:%M:%S", time_info);
puts(timeString);

但输出是这样的:“13:49:53a??J`aS?”

最后的“a??J`aS?”是怎么回事?

最佳答案

你从这段代码中得到了垃圾:

time_t current_time;
struct tm * time_info;
char timeString[8];

time(&current_time);
time_info = localtime(&current_time);

strftime(timeString, 8, "%H:%M:%S", time_info);
puts(timeString);

因为您不允许在字符串上为空终止符 (\0) 留出空间,所以当它打印字符串时,它不知道结尾在哪里,并将下一位内存中的随机垃圾解释为一部分的字符串。

改成这样:

time_t current_time;
struct tm * time_info;
char timeString[9]; // space for "HH:MM:SS\0"

time(&current_time);
time_info = localtime(&current_time);

strftime(timeString, sizeof(timeString), "%H:%M:%S", time_info);
puts(timeString);

它会正常工作,因为 strftime()将有足够的空间来添加\0。请注意,我使用 sizeof(array) 来避免忘记更改两个地方的数字的风险。

关于c - 时间进入字符串与 HH :MM:SS format (C-programming),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1531055/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com