Applies ToWin 10 Ent LTSB 2015

Belirtiler

_Sntscanf_s işlevi çağıran bir uygulama çalıştırdığınızda, çağrı EOF(-1) değer döndürmelidir. Ancak, uygulama Windows 10 kuruluş 2015 LTSB üzerinde çalıştırdığınızda, eklenen null karakteri göz ardı edilir. Bu numFields alan 1EOF (-1) değeri yerine hatalı bir değer almak neden olur.

Örneğin, aşağıdaki Visual C++ uygulamasında bu sorun oluşur:

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

Neden

Windows 10 kuruluş 2015 LTSB içinde bulunan Ucrtbase.dll dosyasına common_vsscanf işlevinde bilinen bir sorun nedeniyle bu sorun oluşur. Bu sorun tüm scanf ailesi işlevlerini etkiler:

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

Çözüm

Bu sorunu gidermek için yükleme bakımı güncelleştirmek 8 Mayıs 2018 — KB4103716 (OS yapı 10240.17861).

Başvurular

Harika C çalışma zamanı (CRT) yeniden düzenleme

Evrensel CRT Tanıtımı

Daha fazla yardıma mı ihtiyacınız var?

Daha fazla seçenek mi istiyorsunuz?

Abonelik avantajlarını keşfedin, eğitim kurslarına göz atın, cihazınızın güvenliğini nasıl sağlayacağınızı öğrenin ve daha fazlasını yapın.

Topluluklar, soru sormanıza ve soruları yanıtlamanıza, geri bildirimde bulunmanıza ve zengin bilgiye sahip uzmanlardan bilgi almanıza yardımcı olur.