sscanf_s:格式字符串'%d'需要类型为'int *'的参数,而可变参数4的类型为'WORD *'

时间:2019-03-18 11:18:10

标签: c++ c warnings

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

我的整个问题是我正在从文件中读取日期,该日期存储在字符串变量中,我需要将当前系统时间减去从文件中读取的日期。

我试图通过将字符串转换为Systemtime来进行排序,然后得到区别,但是尝试了此功能后,我不断收到警告错误,我必须修复该错误,但不知道具体如何。 / p>

2 个答案:

答案 0 :(得分:0)

在Windows中,WORD被定义为unsigned short,因此它需要%u而不是%d

答案 1 :(得分:0)

使用%hu代替%d。

说明:SYSTEMTIME个字段的类型为WORD,定义为

typedef unsigned short WORD;

阅读类型unsigned short要求%hu,如here所述。