我对 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;
}
我知道这是一个非常糟糕的主意,因为我每次调用此函数时都会分配一个新内存,但这是我想要的功能。我不想将我的消息限制为预定义的长度。
只是一个想法或设计模式将非常有帮助。非常感谢!