Aracılığıyla paylaş


vfscanf, vfwscanf

Biçimlendirilmiş verileri bir akıştan okur. Bu işlevlerin daha güvenli sürümleri mevcuttur; bkz. vfscanf_s, vfwscanf_s.

Sözdizimi

int vfscanf(
   FILE *stream,
   const char *format,
   va_list argptr
);
int vfwscanf(
   FILE *stream,
   const wchar_t *format,
   va_list argptr
);

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 vfwscanfiçin vfscanf olurEOF.

Bu işlevler parametrelerini doğrular. Veya format null bir işaretçiysestream, parametre doğrulamasında açıklandığı gibi geçersiz parametre işleyicisi çağrılı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 geçerli konumundaki stream verileri bağımsız değişken listesi 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. formatgiriş alanlarının yorumlanmasını denetler ve için bağımsız değişkeniyle scanfaynı form ve işleve format sahiptir; açıklamasını formatgörmek için bkzscanf. .

vfwscanf , öğesinin vfscanfgeniş karakterli bir sürümüdür; için biçim bağımsız değişkeni vfwscanf geniş karakterli bir dizedir. Akış ANSI modunda açıldığında bu işlevler aynı şekilde davranır. vfscanf UNICODE akışından gelen girişi desteklemez.

Genel metin yordamı eşlemeleri

TCHAR.H yordamı _UNICODE ve _MBCS tanımlanmadı _MBCS tanımlanan _UNICODE tanımlanan
_vftscanf vfscanf vfscanf vfwscanf

Daha fazla bilgi için bkz . Belirtim alanlarını biçimlendirme: scanf ve wscanf işlevleri.

Gereksinimler

İşlev Gerekli başlık
vfscanf <stdio.h>
vfwscanf <stdio.h> veya <wchar.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

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

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

FILE *stream;

int call_vfscanf(FILE * istream, char * format, ...)
{
    int result;
    va_list arglist;
    va_start(arglist, format);
    result = vfscanf(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.out", "w+") != 0)
    {
        printf("The file vfscanf.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(stream, "%s %ld %f%c", s, &l, &fp, &c);

        // 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, _cscanf_l, _cwscanf, _cwscanf_l
fprintf, _fprintf_l, fwprintf, _fwprintf_l
scanf, _scanf_l, wscanf, _wscanf_l
sscanf, _sscanf_l, swscanf, _swscanf_l
fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l
vfscanf_s, vfwscanf_s