sscanf_s: 格式字符串“%d”需要一个类型为 'int *' 的参数,但可变参数 4 的类型为 'WORD *'
sscanf_s: format string '%d' requires an argument of type 'int *', but variadic argument 4 has type 'WORD *'
SYSTEMTIME ConvertStringToSystemTime(const char *dateTimeString) const
{
SYSTEMTIME systime;
memset(&systime, 0, sizeof(systime));
// Date string should be "dd-MM-yyyy hh:mm:ss:mss"
auto u = sscanf_s(dateTimeString, "%d/%d/%d%d:%d:%d:%d:%d",
&systime.wDay,
&systime.wMonth,
&systime.wYear,
&systime.wHour,
&systime.wMinute,
&systime.wSecond,
&systime.wMilliseconds);
return systime;
}
我的整个问题是我正在从一个文件中读取日期,该文件存储在一个字符串变量中,我需要将当前系统时间减去从文件中读取的时间。
我试图通过将字符串转换为系统时间来解决这个问题,然后得到不同之处,但是在尝试这个函数之后,我不断收到我必须修复的警告错误,但不知道具体如何修复.
在windows中,WORD定义为unsigned short
,所以需要%u
而不是%d
。
使用 %hu 而不是 %d。
说明:SYSTEMTIME fields are of type WORD的字段定义为
typedef unsigned short WORD;
阅读类型 unsigned short
需要 %hu
描述 here。
SYSTEMTIME ConvertStringToSystemTime(const char *dateTimeString) const
{
SYSTEMTIME systime;
memset(&systime, 0, sizeof(systime));
// Date string should be "dd-MM-yyyy hh:mm:ss:mss"
auto u = sscanf_s(dateTimeString, "%d/%d/%d%d:%d:%d:%d:%d",
&systime.wDay,
&systime.wMonth,
&systime.wYear,
&systime.wHour,
&systime.wMinute,
&systime.wSecond,
&systime.wMilliseconds);
return systime;
}
我的整个问题是我正在从一个文件中读取日期,该文件存储在一个字符串变量中,我需要将当前系统时间减去从文件中读取的时间。
我试图通过将字符串转换为系统时间来解决这个问题,然后得到不同之处,但是在尝试这个函数之后,我不断收到我必须修复的警告错误,但不知道具体如何修复.
在windows中,WORD定义为unsigned short
,所以需要%u
而不是%d
。
使用 %hu 而不是 %d。
说明:SYSTEMTIME fields are of type WORD的字段定义为
typedef unsigned short WORD;
阅读类型 unsigned short
需要 %hu
描述 here。