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 vfwscanf
iç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 EINVAL
ayarlanı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 format
karşı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şkeniyle scanf
aynı form ve işleve format
sahiptir; açıklamasını format
görmek için bkzscanf
. .
vfwscanf
, öğesinin vfscanf
geniş 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