gpt4 book ai didi

c - time.h 中是否有设置内部缓冲区的函数

转载 作者:太空宇宙 更新时间:2023-11-04 01:33:07 30 4
gpt4 key购买 nike

这是我的代码:

    int main() 
{
time_t time1, time2;
struct tm *timeinfo1, *timeinfo2;
char *time1str, *time2str;


time1 = 3600;
time2 = 3720;

// here i must insert function from time.h

///////////////////////////
timeinfo1 = localtime(&time1);// here
localtime(&time2);

time1str = new char [strlen(asctime(timeinfo1)) + 2];
strcpy(time1str, asctime(timeinfo1));
timeinfo2 = localtime(&time2);
time2str = asctime(timeinfo2);
puts(time1str);
puts(time2str);
getchar();
return 0;
}

我可以在斜杠注释之间插入任何函数来设置内部缓冲区吗?这个缓冲区删除我以前的值。

最佳答案

因为您只用 C 标记了您的问题。在包括 C99 在内的 C 中,没有这样的功能。 C11 现在有一个函数 localtime_s,它是可选边界检查扩展的一部分:

struct tm *localtime_s(const time_t * restrict timer, struct tm * restrict result);

不幸的是,目前还没有很多平台实现该扩展。

POSIX 有一个localtime_r 函数,具有完全相同的接口(interface)和相似的语义。要捕获这种系统并保持可移植性,您可以做类似的事情

#ifdef _XOPEN_SOURCE
# define localtime_s localtime_r
#endif

或者如果你想让它更接近 localtime_s 应该提供的额外保证

#ifdef _XOPEN_SOURCE
struct tm *localtime_s(const time_t * restrict timer, struct tm * restrict result) {
return (timer && result ? localtime_r(timer, result) : 0);
}
#endif

关于c - time.h 中是否有设置内部缓冲区的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19603982/

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