gpt4 book ai didi

c - 尝试将字符串传递给函数时出现错误段错误(核心已转储)

转载 作者:行者123 更新时间:2023-12-04 10:47:42 26 4
gpt4 key购买 nike

当我尝试将当前时间作为字符串传递给代码中的函数记录器时,我收到一条错误消息,指出“段错误(核心已转储)”。但是当我输入 static char str[30] 时,错误并没有出现。但没有错误,生成的文件无法打开它。

void logger(char * logType, int loggingLevel, char * massage)
{
FILE *fp = fopen("log.txt", "a");
fprintf(fp, "%s|%d|%s|%s",logType,loggingLevel,massage,currentTime());
fclose(fp);
}

char * currentTime(void)
{
time_t rawtime;
char str[30];
char *string;
struct tm * timeInfo;
time(&rawtime);
timeInfo = localtime(&rawtime);
strftime(str, 26, "%Y:%m:%d %H:%M:%S", timeInfo);
return str;

}

所以之前我像这样制作了 currentTime 函数

char * currentTime(void) {
time_t rawtime;
struct tm * timeinfo;
time(&rawtime);
timeinfo = localtime(&rawtime);
return asctime(timeinfo);
}

它工作正常,但这不是我需要的显示时间的方式。

最佳答案

您正在从函数 currentTime() 返回一个局部变量,它是 undefined behaviour .

将函数签名更改为:char * currentTime(char *inputBuffer, size_t bufLen)

关于c - 尝试将字符串传递给函数时出现错误段错误(核心已转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32137198/

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