sprintf_s使用错误

tdjdyq 2010-01-12 04:09:50
void GetCurTime(char* pTempCh,uint nSize)
{
time_t t=0;
struct tm ltm;
t = time(NULL);
errno_t nError = localtime_s(<m,&t);
if(nError != 0)
{
sprintf_s(pTempCh,nSize,"0%lu",uint(t));
}
else
{
char pTemp[5];
memset(pTemp,0,5);
sprintf_s(&pTempCh[0],nSize,"%d",ltm.tm_year + 1900);
if( ltm.tm_mon+1 >=0 && ltm.tm_mon+1 < 10 )
{
sprintf_s(&pTempCh[4],nSize,"0%d", ltm.tm_mon + 1);
}
else
sprintf_s(&pTempCh[4],nSize,"%d", ltm.tm_mon + 1);
if(ltm.tm_mday >= 0 && ltm.tm_mday < 10)
{
sprintf_s(&pTempCh[6],nSize,"0%d",ltm.tm_mday);
}
else
sprintf_s(&pTempCh[6],nSize,"%d",ltm.tm_mday);
if(ltm.tm_hour >= 0 && ltm.tm_hour < 10)
{
sprintf_s(&pTempCh[8],nSize,"0%d",ltm.tm_hour);
}
else
sprintf_s(&pTempCh[8],nSize,"%d",ltm.tm_hour);
if(ltm.tm_min >= 0 && ltm.tm_min < 10)
{
sprintf_s(&pTempCh[10],nSize,"0%d",ltm.tm_min);
}
else
sprintf_s(&pTempCh[10],nSize,"%d",ltm.tm_min);
if(ltm.tm_sec >= 0 && ltm.tm_sec < 10)
{
sprintf_s(&pTempCh[12],nSize,"0%d",ltm.tm_sec);
}
else
sprintf_s(&pTempCh[12],nSize,"%d",ltm.tm_sec);
}
}

调用方式:
char pCh[16];
memset(pCh,0,16);
GetCurTime(pCh,16);

大家帮我看看这段代码有什么问题?谢谢




...全文
262 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
iwgh 2010-01-12
  • 打赏
  • 举报
回复
char* pTempCh参数类型是char*
如果你要调用的话,请把size-1

char pTemp[5];
memset(pTemp,0,5);
sprintf_s(&pTempCh[0],4,"%d",ltm.tm_year + 1900);
if( ltm.tm_mon+1 >=0 && ltm.tm_mon+1 < 10 )
{
sprintf_s(&pTempCh[4],2,"0%d", ltm.tm_mon + 1);
}
else
sprintf_s(&pTempCh[4],2,"%d", ltm.tm_mon + 1);
......
xianyuxiaoqiang 2010-01-12
  • 打赏
  • 举报
回复
char pCh[100]; 
memset(pCh,0,100);
hh_xj 2010-01-12
  • 打赏
  • 举报
回复
用 istringstream 和 ostringstream吧,

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧