fscanf_s
, _fscanf_s_l
, fwscanf_s
, _fwscanf_s_l
Biçimlendirilmiş verileri bir akıştan okur. Bu , _fscanf_l
, , _fwscanf_l
fwscanf
sürümlerininfscanf
, CRT'deki Güvenlik özellikleri bölümünde açıklandığı gibi güvenlik geliştirmeleri vardır.
Sözdizimi
int fscanf_s(
FILE *stream,
const char *format [,
argument ]...
);
int _fscanf_s_l(
FILE *stream,
const char *format,
_locale_t locale [,
argument ]...
);
int fwscanf_s(
FILE *stream,
const wchar_t *format [,
argument ]...
);
int _fwscanf_s_l(
FILE *stream,
const wchar_t *format,
_locale_t locale [,
argument ]...
);
Parametreler
stream
Yapı işaretçisi FILE
.
format
Biçim denetimi dizesi.
argument
İsteğe bağlı bağımsız değişkenler.
locale
Kullanılacak yerel ayar.
Dönüş değeri
Bu işlevlerin her biri başarıyla dönüştürdüğü ve atadığını 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 fwscanf_s
için fscanf_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 EINVAL
ayarlanırerrno
.
Açıklamalar
işlevi geçerli fscanf_s
konumundaki stream
verileri tarafından argument
verilen konumlara (varsa) okur. Her argument
biri, 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şkenle aynı form ve işleve format
sahiptir; açıklaması format
için scanf_s
bkz. Belirtim alanlarını biçimlendirme: scanf
ve wscanf
işlevleri. fwscanf_s
, öğesinin fscanf_s
geniş karakterli bir sürümüdür; için biçim bağımsız değişkeni fwscanf_s
geniş karakterli bir dizedir. Akış ANSI modunda açıldığında bu işlevler aynı şekilde davranır. fscanf_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 c
bir , , C
s
, S
ve [
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_s_l
wscanf_s
ve scanf
Width Specification.
Not
Boyut parametresi türündedir unsigned
, türünde değildir size_t
.
Bu işlevlerin son ekine _l
sahip sürümleri, geçerli iş parçacığı yerel ayarı yerine geçirilen yerel ayar parametresini kullanmaları dışında aynıdır.
Genel metin yordamı eşlemeleri
TCHAR.H olağan |
_UNICODE ve _MBCS tanımlanmadı |
_MBCS tanımlanan |
_UNICODE tanımlanan |
---|---|---|---|
_ftscanf_s |
fscanf_s |
fscanf_s |
fwscanf_s |
_ftscanf_s_l |
_fscanf_s_l |
_fscanf_s_l |
_fwscanf_s_l |
Gereksinimler
İşlev | Gerekli başlık |
---|---|
fscanf_s , _fscanf_s_l |
<stdio.h> |
fwscanf_s , _fwscanf_s_l |
<stdio.h> veya <wchar.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// crt_fscanf_s.c
// This program writes formatted
// data to a file. It then uses fscanf to
// read the various data back from the file.
#include <stdio.h>
#include <stdlib.h>
FILE *stream;
int main( void )
{
long l;
float fp;
char s[81];
char c;
errno_t err = fopen_s( &stream, "fscanf.out", "w+" );
if( err )
printf_s( "The file fscanf.out was not opened\n" );
else
{
fprintf_s( stream, "%s %ld %f%c", "a-string",
65000, 3.14159, 'x' );
// Set pointer to beginning of file:
fseek( stream, 0L, SEEK_SET );
// Read data back from file:
fscanf_s( stream, "%s", s, _countof(s) );
fscanf_s( stream, "%ld", &l );
fscanf_s( stream, "%f", &fp );
fscanf_s( stream, "%c", &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