gpt4 book ai didi

c++ - 缓冲区溢出发生在 SystemTimeToVariantTime

转载 作者:行者123 更新时间:2023-11-28 04:41:22 25 4
gpt4 key购买 nike

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

这是我的代码。它会将包含日期和时间的 wstring 转换为 DATE 类型。然而,当我运行这部分代码时,当调试器离开这个函数范围时,它总是抛出异常说“缓冲区溢出”。我还尝试将其更改为 void ConvertDateIntoSystemFormat(std::wstring dateModified,DATE* date) 并尝试在将其传递给此函数时为日期分配内存或尝试使用 LPSYSTEMTIME 而不是 SYSTEMTIME,或尝试使用 DATE Con​​vertDateIntoSystemFormat(std::wstring dateModified) 在函数内声明 DATE date 但它们都不起作用,缓冲区溢出问题仍然发生。如何解决这个问题?

enter image description here

最佳答案

所有 SYSTEMTIME 字段都具有 WORD 类型(又名 short),而格式 %d 需要一个指向整数。使用 %hd 修复格式字符串。

关于c++ - 缓冲区溢出发生在 SystemTimeToVariantTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50124773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com