vfscanf_s
, vfwscanf_s
Membaca data yang diformat dari aliran. Versi vfscanf, vfwscanf ini memiliki peningkatan keamanan, seperti yang dijelaskan dalam Fitur keamanan di CRT.
Sintaks
int vfscanf_s(
FILE *stream,
const char *format,
va_list arglist
);
int vfwscanf_s(
FILE *stream,
const wchar_t *format,
va_list arglist
);
Parameter
stream
Penunjuk ke FILE
struktur.
format
String kontrol format.
arglist
Daftar argumen variabel.
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 vfscanf_s
dan vfwscanf_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 vfscanf_s
data dari posisi stream
saat ini ke lokasi yang diberikan oleh arglist
daftar argumen (jika ada). Setiap argumen dalam daftar harus berupa 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
. vfwscanf_s
adalah versi vfscanf_s
karakter lebar ; argumen format ke vfwscanf_s
adalah string karakter lebar. Fungsi-fungsi ini bersifat identik jika aliran dibuka dalam mode ANSI. vfscanf_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 c
bidang , , C
s
, S
, dan [
jenis untuk diteruskan sebagai argumen segera mengikuti variabel. Untuk informasi selengkapnya, lihat scanf_s
spesifikasi , _scanf_s_l
, wscanf_s
, _wscanf_s_l
dan scanf
lebar.
Catatan
Parameter ukuran berjenis unsigned
, bukan size_t
.
Pemetaan rutin teks generik
TCHAR. Rutinitas H | _UNICODE dan _MBCS tidak ditentukan |
_MBCS Didefinisikan |
_UNICODE Didefinisikan |
---|---|---|---|
_vftscanf_s |
vfscanf_s |
vfscanf_s |
vfwscanf_s |
Persyaratan
Function | Header yang diperlukan |
---|---|
vfscanf_s |
<stdio.h> |
vfwscanf_s |
<stdio.h> atau <wchar.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Contoh
// crt_vfscanf_s.c
// compile with: /W3
// This program writes formatted
// data to a file. It then uses vfscanf_s to
// read the various data back from the file.
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
FILE *stream;
int call_vfscanf_s(FILE * istream, char * format, ...)
{
int result;
va_list arglist;
va_start(arglist, format);
result = vfscanf_s(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_s.out", "w+") != 0)
{
printf("The file vfscanf_s.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_s(stream, "%s %ld %f%c", s, _countof(s), &l, &fp, &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
vfscanf
, vfwscanf
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk