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