0
点赞
收藏
分享

微信扫一扫

sprintf格式化程序异常退出问题

覃榜言 2022-02-11 阅读 26
c语言

使用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

举报

相关推荐

0 条评论