Popravak: VC ++ scanf ne vraćaju EOF(-1) na Windows 10 Enterprise 2015 LTSB

Simptomi

Kada pokrenete program koji poziva funkciju _sntscanf_s poziv treba vratiti vrijednost EOF(-1) . Međutim, kada pokrenete aplikacije na Windows 10 Enterprise 2015 LTSB umetnutog znak null se zanemaruje. To uzrokuje numFields polje za primanje pogrešnu vrijednost 1 umjesto vrijednosti EOF (-1) .

Na primjer, taj se problem pojavljuje u aplikaciji Visual C++ sljedeće:

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

Uzrok

Taj se problem pojavljuje zbog poznatih problema u funkcija common_vsscanf u datoteci Ucrtbase.dll u Windows 10 Enterprise 2015 LTSB. Taj problem utječe na cijeli scanf obitelj funkcije:

  • _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

Razlučivost

Da biste riješili taj problem, instaliranje servisiranja ažuriranje možda 8, 2018 — KB4103716 (OS Build 10240.17861).

Reference

Odličan C Runtime (CRT) restrukturiranje

Predstavljanje univerzalni CRT

Potrebna vam je dodatna pomoć?

Proširite svoje vještine
Istražite osposobljavanje
Prvi koristite nove značajke
Pridružite se Microsoft Insidere

Jesu li ove informacije bile korisne?

Hvala vam na povratnim informacijama!

Hvala vam na povratnim informacijama! Čini se da bi vam pomoglo kad bismo vas povezali s nekim od naših agenata podrške za Office.

×