fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l
Biçimlendirilmiş verileri bir akıştan okur.Bu fscanf, _fscanf_l, fwscanf, _fwscanf_l sürümlerinde CRT'deki Güvenlik Özellikleri içinde açıklandığı gibi güvenlik geliştirmeleri mevcut olabilir.
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
FILE yapısı işaretçisi.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ürülen ve atanan alanların sayısını getirir; dönüş değeri, okunmuş ancak atanmamış alanları içermez.Döndürülen değer 0 ise, hiçbir alan atanmamıştır.Bir hata oluşursa veya dosya akışı sonuna ilk dönüştürmeden önce ulaşılırsa, dönüş değeri fscanf_s ve fwscanf_s için EOF olur.
Bu işlevler, kendi parametrelerini doğrular.stream geçersiz bir dosya işaretçisiyse veya format, null bir 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 etmesine izin verilirse, bu işlevler EOF döndürür ve errno öğesini EINVAL olarak ayarlar.
Notlar
fscanf_s İşlevi geçerli konumunu veri okur stream tarafından verilen konumları içine argument (varsa).Her argument bir tür belirleyici içinde karşılık gelen bir türünde bir değişken için bir işaretçi olmalıdır format.formatyorumunu giriş alanları ve aynı denetimleri form ve olarak işlev format bağımsız değişkeni için scanf_s; bkz: Biçim Belirtimi Alanları: scanf ve wscanf İşlevleri açıklaması için format. fwscanf_sbir geniş karakter sürümü fscanf_s; format bağımsız fwscanf_s bir geniş karakter dizesidir.Bu işlevler akış ANSI modunda açıldığında benzer şekilde çalışır.fscanf_sUNICODE akıştan şu anda giriş desteklemiyor.
Daha güvenli işlevler (_s sonekine sahip) ve diğer sürümler arasındaki temel fark, daha güvenli işlevlerinin her c, C, s, S ve [ tür alanının karakterlerindeki boyutun değişkenin hemen ardından gelen bir bağımsız değişken olarak geçirilmesini gerektirmesidir.Daha fazla bilgi için, bkz. scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l ve sacnf Genişlik Belirtimi.
[!NOT]
Boyut parametresi size_t değil unsigned türündedir.
Bu işlevleri sürümlerini _l geçirilen yerel parametre geçerli iş parçacığı yerel kullandıkları dışında sonek özdeş.
Genel Metin Yordam Eşleşmeleri
TCHAR.H yordamı |
_UNICODE & _MBCS tanımlanmamış |
_MBCS tanımlanmış |
_UNICODE tanımlanmış |
---|---|---|---|
_ftscanf_s |
fscanf_s |
fscanf_s |
fwscanf_s |
_ftscanf_s_l |
_fscanf_s_l |
_fscanf_s_l |
_fwscanf_s_l |
Gereksinimler
Function |
Gerekli başlık |
---|---|
fscanf_s, _fscanf_s_l |
<stdio.h> |
fwscanf_s, _fwscanf_s_l |
<stdio.h> or <wchar.h> |
Ek uyumluluk bilgileri 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 );
}
}
.NET Framework Eşdeğeri
System::IO::StreamReader::ReadLine. Ayrıca bkz: Parse yöntemleri, örneğin System::Double::Parse.
Ayrıca bkz.
Başvuru
_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