gpt4 book ai didi

c - 在 C 中创建 get_time() 函数时出现问题

转载 作者:行者123 更新时间:2023-11-30 17:17:05 27 4
gpt4 key购买 nike

我有这个简单的功能:

char*
get_time()
{
char *buffer = malloc(sizeof(char)*10); /* HOW TO FREE IT ? */
time_t rawtime;
struct tm * timeinfo;

time(&rawtime);
timeinfo = localtime(&rawtime);
strftime(buffer,10,"%H:%M:%S",timeinfo);

return buffer;
}

问题出在 strftime() 上,它需要 char* 并且在返回他的内容之前我无法 free(buffer); 。我能做什么?

我使用该函数的宏:

#define log_info(msg) printf("%s [INFO ] - %s\n",get_time(), (msg))

最佳答案

类似这样的事情

static char g_buffer[10];                                                      

#define log_info(msg) \
do { \
get_time(); \
printf("%s [INFO ] - %s\n", g_buffer, (msg)); \
g_buffer[0] = '\0'; \
} while (0)

static int get_time()
{
time_t rawtime;
struct tm * timeinfo;

time(&rawtime);
timeinfo = localtime(&rawtime);
strftime(g_buffer,sizeof(g_buffer),"%H:%M:%S",timeinfo);

return 0;
}

int main(void) {
log_info("test");
return 0;
}

但是不需要宏,函数就可以完成这项工作

关于c - 在 C 中创建 get_time() 函数时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29475334/

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