使用sprintf格式化程序异常
static char logfileBuf[1024] = {0};
sprintf(logfileBuf, "<%d ms>[%s:%d %s] %s", time, __FILE__, __LINE__, __FUNCTION__, buf);
直接格式化输出到logfileBuf
程序异常退出
开始以为会不会是logfileBuf
缓冲区太小导致的,增大后依然异常退出
调试很久才找到解决办法
char fileBuf[512] = {0};
char lineBuf[100] = {0};
char funcBuf[100] = {0};
char timeBuf[100] = {0};
sprintf(timeBuf, "<%lld ms>", time);
sprintf(fileBuf, "%s", __FILE__);
sprintf(lineBuf, "%d", __LINE__);
sprintf(funcBuf, "%s", __FUNCTION__);
sprintf(logfileBuf, "%s[%s:%s %s] %s", timeBuf, fileBuf, lineBuf, funcBuf, buf);
先分步格式化__FILE__、__LINE__
这些,最后再统一格式化到logfileBuf
。