Aracılığıyla paylaş


fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l

Biçimlendirilmiş verileri bir akıştan okur. Bu , _fscanf_l, , _fwscanf_l fwscanfsü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_siç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 EINVALayarlanı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 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. fwscanf_s , öğesinin fscanf_sgeniş 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 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_s_lwscanf_sve 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