Перейти до основного
Підтримка
Вхід
Вхід за допомогою облікового запису Microsoft
Увійдіть або створіть обліковий запис.
Вітаємо,
Виберіть інший обліковий запис.
У вас є кілька облікових записів
Виберіть обліковий запис, за допомогою якого потрібно ввійти.

Причини

Після запуску застосунку, який викликає функцію _sntscanf_s , виклик повернуться до EOF(-1) значення. Однак під час запуску застосунку, у Windows-10 Enterprise 2015 LTSB вводять нуль-символ ігнорується. Це призводить до numFields поле для отримання помилкове значення 1 , а значення EOF (-1) .

Наприклад, ця проблема виникає, у програмі Visual C++ нижче:

#include "stdafx.h"
#include "string.h"
#include "stdlib.h"

int main()
{
    TCHAR szBuff[256];
    double temp = 0;
    wcscpy_s(szBuff, L"77777777");

    // this should force the _sntscanf_s to return an EOF (-1) value
    szBuff[0] = '\0';

    int numFields = _sntscanf_s(szBuff, _countof(szBuff), _T("%lf"), &temp);
    if (numFields == EOF)
    {
        printf("Correct Behavior!!!\r\n");
    }
    else
    {
        printf("BUG: _sntscanf_s failed to return EOF!!!\r\n");
    }
    return 0;
}

Причина

Ця проблема виникає, через відомі проблеми у файлі Ucrtbase.dll, входить до складу Windows 10-Enterprise 2015 LTSB, функція common_vsscanf . Ця проблема впливає на весь scanf родини функцій:

  • _vsscanf_l

  • - vsscanf

  • _sscanf_l

  • - sscanf

  • _vsscanf_s_l

  • vsscanf_s

  • _sscanfs_l

  • sscanf_s

  • _snscanf_l

  • _snscanf_s

  • _snscanf_s_l

  • _snscanf_s

  • _vswscanf_l

  • - vswscanf

  • _swscanf_l

  • - swscanf

  • _vswscanf_s_l

  • vswscanf_s

  • _wsscanfs_l

  • swscanf_s

  • _snwscanf_l

  • _snwscanf_s

  • _snwscanf_s_l

  • _snwscanf_s

Вирішення

Щоб вирішити цю проблему, встановити на обслуговування оновлення 8 травня 2018-KB4103716 (10240.17861 збірки операційної системи).

Посилання

З більше часу виконання мови C (CRT) рефакторинга

Ознайомлення з універсального CRT.

Потрібна додаткова довідка?

Потрібні додаткові параметри?

Ознайомтеся з перевагами передплати, перегляньте навчальні курси, дізнайтесь, як захистити свій пристрій тощо.

Спільноти допомагають ставити запитання й відповідати на них, надавати відгуки та дізнаватися думки висококваліфікованих експертів.

Чи ця інформація була корисною?

Наскільки ви задоволені якістю мови?
Що вплинуло на ваші враження?
Натиснувши кнопку "Надіслати", ви надасте свій відгук для покращення продуктів і служб Microsoft. Ваш ІТ-адміністратор зможе збирати ці дані. Декларація про конфіденційність.

Дякуємо за відгук!

×