переполнение буфера происходит в SystemTimeToVariantTime

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);
}

Вот мой код Он преобразует строку, содержащую дату и время, вDATE тип.
Тем не менее, когда я запускаю эту часть кода, он всегда выдает исключения, которые говорят «переполнение буфера», когда отладчик покидает область действия этой функции.
Я также пытался изменить это void ConvertDateIntoSystemFormat(std::wstring dateModified,DATE* date) и попробуйте выделить память на дату, когда передаете ее этой функции или пытаетесь использовать LPSYSTEMTIME вместо SYSTEMTIMEили пытался DATE ConvertDateIntoSystemFormat(std::wstring dateModified) с объявить DATE date внутри функции, но ни одна из них не работает, проблема переполнения буфера все еще возникает.
Как решить эту проблему?

введите описание изображения здесь

0

Решение

Все SYSTEMTIME поля имеют WORD тип (иначе short) пока формат %d ожидает указатель на int, Исправить строку формата с помощью %hd,

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]