Reputation: 1085
void ConvertDateIntoSystemFormat(std::wstring dateModified,DATE& date)
{
SYSTEMTIME systemTime;
memset(&systemTime, 0, sizeof(systemTime));
sscanf_s(ConvertWstringToCharStar(dateModified), "%d-%d-%dT%d:%d:%d.%dZ",
&systemTime.wYear, &systemTime.wMonth, &systemTime.wDay, &systemTime.wHour, &systemTime.wMinute, &systemTime.wSecond, &systemTime.wMilliseconds);
SystemTimeToVariantTime(&systemTime, &date);
}
Here is my code. It will convert a wstring which contains date and time intoDATE
type.
However, when I run this part of code, it always throw exceptions says "buffer overrun" when the debugger is leaving this function scope.
I alsy tried to chnage it to void ConvertDateIntoSystemFormat(std::wstring dateModified,DATE* date)
and try to allocate memeory for date when pass it to this function or tried use LPSYSTEMTIME
instead of SYSTEMTIME
, or tried DATE ConvertDateIntoSystemFormat(std::wstring dateModified)
with declare DATE date
inside the function but none of them works, the buffer overrun problem still happens.
How to fix this problem?
Upvotes: 0
Views: 150
Reputation: 37588
All SYSTEMTIME
fields have WORD
type (aka short
) while format %d
expects a pointer to an int
. Fix format string by using %hd
.
Upvotes: 1