Aracılığıyla paylaş


vfscanf_s, vfwscanf_s

Biçimlendirilmiş verileri bir akıştan okur. vfscanf, vfwscanf'ın bu sürümleri, CRT'deki Güvenlik özellikleri bölümünde açıklandığı gibi güvenlik geliştirmelerine sahiptir.

Sözdizimi

int vfscanf_s(
   FILE *stream,
   const char *format,
   va_list arglist
);
int vfwscanf_s(
   FILE *stream,
   const wchar_t *format,
   va_list arglist
);

Parametreler

stream
Yapı işaretçisi FILE .

format
Biçim denetimi dizesi.

arglist
Değişken bağımsız değişken listesi.

Dönüş değeri

Bu işlevlerin her biri başarıyla dönüştürülen ve atanan alan sayısını döndürür. Dönüş değeri okunmuş ancak atanmamış alanları içermez. 0 dönüş değeri, hiçbir alanın atanmadığını gösterir. Bir hata oluşursa veya ilk dönüştürmeden önce dosya akışının sonuna ulaşılırsa, dönüş değeri ve vfwscanf_siçin vfscanf_s olurEOF.

Bu işlevler parametrelerini doğrular. stream Geçersiz bir dosya işaretçisi veya format null işaretçiyse, bu işlevler Parametre doğrulama bölümünde açıklandığı gibi geçersiz parametre işleyicisini çağırır. Yürütmenin devam etmesi için izin verilirse, bu işlevler döndürülerek EOF olarak EINVALayarlanırerrno.

Açıklamalar

işlevi, vfscanf_s geçerli konumundaki stream verileri bağımsız değişken listesi (varsa) tarafından arglist verilen konumlara okur. Listedeki her bağımsız değişken, içindeki bir tür tanımlayıcısına formatkarşılık gelen bir tür değişkeninin işaretçisi olmalıdır. format, giriş alanlarının yorumlanmasını denetler ve için bağımsız değişkenle aynı form ve işleve format sahiptir; açıklaması formatiçin scanf_sbkz. Belirtim alanlarını biçimlendirme: scanf ve wscanf işlevleri. vfwscanf_s , öğesinin vfscanf_sgeniş karakterli bir sürümüdür; için biçim bağımsız değişkeni vfwscanf_s geniş karakterli bir dizedir. Akış ANSI modunda açıldığında bu işlevler aynı şekilde davranır. vfscanf_s şu anda bir UNICODE akışından girişi desteklemez.

Daha güvenli işlevler (soneki olan_s) ile diğer sürümler arasındaki temel fark, daha güvenli işlevlerin her cbir , , Cs, Sve [ tür alanının karakter cinsinden boyutunun değişkenin hemen ardından bağımsız değişken olarak geçirilmesini gerektirmesidir. Daha fazla bilgi için bkzscanf_s. , _scanf_s_l, wscanf_sve _wscanf_s_lscanf genişlik belirtimi.

Dekont

Boyut parametresi türündedir unsigned, türünde değildir size_t.

Genel metin yordamı eşlemeleri

TCHAR.H yordamı _UNICODE ve _MBCS tanımlanmadı _MBCS Tanımlanan _UNICODE Tanımlanan
_vftscanf_s vfscanf_s vfscanf_s vfwscanf_s

Gereksinimler

Function Gerekli başlık
vfscanf_s <stdio.h>
vfwscanf_s <stdio.h> veya <wchar.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

// crt_vfscanf_s.c
// compile with: /W3
// This program writes formatted
// data to a file. It then uses vfscanf_s to
// read the various data back from the file.

#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>

FILE *stream;

int call_vfscanf_s(FILE * istream, char * format, ...)
{
    int result;
    va_list arglist;
    va_start(arglist, format);
    result = vfscanf_s(istream, format, arglist);
    va_end(arglist);
    return result;
}

int main(void)
{
    long l;
    float fp;
    char s[81];
    char c;

    if (fopen_s(&stream, "vfscanf_s.out", "w+") != 0)
    {
        printf("The file vfscanf_s.out was not opened\n");
    }
    else
    {
        fprintf(stream, "%s %ld %f%c", "a-string",
            65000, 3.14159, 'x');
        // Security caution!
        // Beware loading data from a file without confirming its size,
        // as it may lead to a buffer overrun situation.

        // Set pointer to beginning of file:
        fseek(stream, 0L, SEEK_SET);

        // Read data back from file:
        call_vfscanf_s(stream, "%s %ld %f%c", s, _countof(s), &l, &fp, &c, 1);

        // Output data read:
        printf("%s\n", s);
        printf("%ld\n", l);
        printf("%f\n", fp);
        printf("%c\n", c);

        fclose(stream);
    }
}
a-string
65000
3.141590
x

Ayrıca bkz.

Akış G/Ç
_cscanf_s, _cscanf_s_l, _cwscanf_s, _cwscanf_s_l
fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l
scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l
sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l
fscanf, _fscanf_l, fwscanf, _fwscanf_l
vfscanf, vfwscanf