我对 C 非常陌生,我想编写一个函数,它接受一个字符串并返回一个字符串,前面有当前日期和时间。我需要一些日志记录功能,但我不想直接打印到输出流。
#define TIME_FORMAT "[%Y-%m-%d %H:%M:%S] "
char *logMsg(char *msg) {
char timeStr[23];
time_t tms;
struct tm *localTime;
tms = time(NULL);
localTime = localtime(&tms);
strftime(timeStr, sizeof(timeStr), TIME_FORMAT, localTime);
int lenMsg = strlen(msg);
int newLen = sizeof(timeStr) + lenMsg + 1;
char *newStr;
newStr = (char *) calloc(newLen,sizeof(char));
strcat(newStr,timeStr);
strcat(newStr,msg);
return newStr;
}
我知道这是一个非常糟糕的主意,因为我每次调用此函数时都会分配一个新内存,但这是我想要的功能。我不想将我的消息限制为预定义的长度。
只是一个想法或设计模式将非常有帮助。非常感谢!