Tôi đã gỡ lỗi mã của mình bằng công cụ Valgrind. Nó cho thấy lỗi này ở hàm này. Tôi đã đưa ra dưới đây lỗi và chức năng của tôi. Tôi không biết vấn đề ở đây là gì? Làm thế nào tôi có thể khắc phục nó? Lỗi của tôi là.Giá trị chưa được khởi tạo được tạo bởi phân bổ ngăn xếp
giá trị Uninitialised được tạo ra bởi một phân bổ đống tại 0x80996D7: cdtojd (std :: string const &)
Mã của tôi là.
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;
}
Bạn đã xem xét việc kiểm tra lỗi sscanf()? –
Kiểm tra xem sscanf có thành công không – Igor