我使用Valgrind工具調試了我的代碼。它在此功能中顯示此錯誤。我在下面給出了錯誤和我的功能。我不知道這裏有什麼問題?我該如何糾正它? 我的錯誤是。未初始化的值是由堆棧分配創建的
未初始化值由堆棧分配在0x80996D7創建: cdtojd(的std :: string常量&)
我的代碼。
double cdtojd(const string &cdate);
double cdtojd(const string &cdate)
{
int dd,mm,yy;
int y,m;
double jd=0;
//mm = atoi(cdate.substr(0,2).c_str());
//dd = atoi(cdate.substr(2,2).c_str());
//yy = atoi(cdate.substr(4,4).c_str());
sscanf(cdate.c_str(),"%2d%2d%4d",&mm,&dd,&yy);
//cout<<mm<<"..."<<dd<<"...."<<yy<<endl;
y = (yy - 1900) * 372;
m = (mm-1) * 31;
jd = dd + m + y;
return jd;
}
您是否考慮檢查sscanf()是否存在錯誤? – 2014-10-04 08:06:19
檢查sscanf是否成功 – Igor 2014-10-04 08:06:59