fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l

Membaca data yang diformat dari aliran. Versi , , ,fwscanf_fwscanf_lini memiliki peningkatan keamanan, seperti yang dijelaskan dalam Fitur keamanan di CRT. _fscanf_lfscanf

Sintaks

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 ]...
);

Parameter

stream
Penunjuk ke FILE struktur.

format
String kontrol format.

argument
Argumen opsional.

locale
Lokal yang akan digunakan.

Nilai hasil

Masing-masing fungsi ini mengembalikan jumlah bidang yang berhasil dikonversi dan ditetapkan. Nilai yang dikembalikan tidak menyertakan bidang yang dibaca tetapi tidak ditetapkan. Nilai pengembalian 0 menunjukkan bahwa tidak ada bidang yang ditetapkan. Jika terjadi kesalahan, atau jika akhir aliran file tercapai sebelum konversi pertama, nilai yang dikembalikan adalah EOF untuk fscanf_s dan fwscanf_s.

Fungsi-fungsi ini memvalidasi parameternya. Jika stream adalah penunjuk file yang tidak valid, atau format merupakan penunjuk null, fungsi-fungsi ini memanggil handler parameter yang tidak valid, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi-fungsi ini kembali EOF dan diatur errno ke EINVAL.

Keterangan

Fungsi membaca fscanf_s data dari posisi stream saat ini ke lokasi yang diberikan oleh argument (jika ada). Masing-masing argument harus menjadi penunjuk ke variabel jenis yang sesuai dengan penentu jenis di format. format mengontrol interpretasi bidang input dan memiliki bentuk dan fungsi yang sama dengan format argumen untuk scanf_s; lihat Memformat bidang spesifikasi: scanf dan wscanf fungsi untuk deskripsi format. fwscanf_s adalah versi fscanf_skarakter lebar ; argumen format ke fwscanf_s adalah string karakter lebar. Fungsi-fungsi ini bersifat identik jika aliran dibuka dalam mode ANSI. fscanf_s saat ini tidak mendukung input dari aliran UNICODE.

Perbedaan utama antara fungsi yang lebih aman (yang memiliki _s akhiran) dan versi lainnya adalah bahwa fungsi yang lebih aman memerlukan ukuran dalam karakter masing-masing cbidang , , Cs, S, dan [ jenis untuk diteruskan sebagai argumen segera mengikuti variabel. Untuk informasi selengkapnya, lihat scanf_sSpesifikasi , _scanf_s_l, wscanf_s, _wscanf_s_l dan scanf Lebar.

Catatan

Parameter ukuran berjenis unsigned, bukan size_t.

Versi fungsi-fungsi ini yang memiliki _l akhiran identik kecuali mereka menggunakan parameter lokal yang diteruskan alih-alih lokal utas saat ini.

Pemetaan rutin teks generik

TCHAR.H Rutin _UNICODE dan _MBCS tidak ditentukan _MBCS Didefinisikan _UNICODE Didefinisikan
_ftscanf_s fscanf_s fscanf_s fwscanf_s
_ftscanf_s_l _fscanf_s_l _fscanf_s_l _fwscanf_s_l

Persyaratan

Function Header yang diperlukan
fscanf_s, _fscanf_s_l <stdio.h>
fwscanf_s, _fwscanf_s_l <stdio.h> atau <wchar.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

// 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

Baca juga

Streaming I/O
_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