Gilt für
Windows 10 Enterprise LTSB 2015

Problembeschreibung

Beim Ausführen einer Anwendung, die _sntscanf_s -Funktion aufruft, muss der Aufruf einen EOF(-1) Wert zurückgeben. Beim Ausführen der Anwendungdes auf Windows 10 Enterprise 2015 LTSB wird das eingefügte Nullzeichen ignoriert. Dadurch NumFields Feld einen fehlerhaften Wert 1 Nullwerte EOF (-1) erhalten.

Beispielsweise tritt dieses Problem in den folgenden Visual C++-Anwendung:

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

Ursache

Dieses Problem tritt aufgrund eines bekannten Problems in der Common_vsscanf -Funktion in der Datei Ucrtbase.dll im Windows 10 Enterprise 2015 LTSB. Dieses Problem betrifft die gesamte Scanf -Familie von Funktionen:

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

Problemlösung

Um dieses Problem zu beheben, installieren Service aktualisieren 8 Mai 2018 – KB4103716 (OS Build 10240.17861).

Referenzen

Große C Runtime (CRT) Umgestaltung

Einführung in universelle CRT

Benötigen Sie weitere Hilfe?

Möchten Sie weitere Optionen?

Erkunden Sie die Abonnementvorteile, durchsuchen Sie Trainingskurse, erfahren Sie, wie Sie Ihr Gerät schützen und vieles mehr.