_snscanf_s, _snscanf_s_l, _snwscanf_s, _snwscanf_s_l

Membaca data yang diformat dengan panjang tertentu dari string. Fungsi-fungsi ini adalah versi _snscanf, _snscanf_l, _snwscanf, _snwscanf_l dengan peningkatan keamanan seperti yang dijelaskan dalam Fitur keamanan di CRT.

Sintaks

int __cdecl _snscanf_s(
   const char * input,
   size_t length,
   const char * format [, argument_list]
);
int __cdecl _snscanf_s_l(
   const char * input,
   size_t length,
   const char * format,
   _locale_t locale [, argument_list]
);
int __cdecl _snwscanf_s(
   const wchar_t * input,
   size_t length,
   const wchar_t * format [, argument_list]
);
int __cdecl _snwscanf_s_l(
   const wchar_t * input,
   size_t length,
   const wchar_t * format,
   _locale_t locale [, argument_list]
);

Parameter

input
Masukkan string untuk diperiksa.

length
Jumlah karakter yang akan diperiksa di input.

format
Satu atau beberapa penentu format.

locale
Lokal yang akan digunakan.

argument_list
Argumen opsional yang akan ditetapkan sesuai dengan string format.

Nilai hasil

Kedua fungsi ini mengembalikan jumlah bidang yang berhasil dikonversi dan ditetapkan; nilai pengembalian tidak menyertakan bidang yang dibaca tetapi tidak ditetapkan. Nilai pengembalian 0 menunjukkan bahwa tidak ada bidang yang ditetapkan. Nilai yang dikembalikan adalah EOF untuk kesalahan atau jika akhir string tercapai sebelum konversi pertama. Untuk informasi selengkapnya, lihat sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l.

Jika input atau format adalah NULL penunjuk, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi-fungsi ini kembali EOF dan diatur errno ke EINVAL.

Untuk informasi tentang kode kesalahan ini dan lainnya, lihat errno, , _doserrno_sys_errlist, dan _sys_nerr.

Keterangan

Fungsi ini seperti sscanf_s, kecuali memungkinkan Anda menentukan jumlah karakter tetap untuk diperiksa dari string input. Untuk informasi selengkapnya, lihat sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l.

Parameter ukuran buffer diperlukan dengan jenis karakter bidang c, C, s, S, dan [. Untuk informasi selengkapnya, lihat Memindai Tipe Karakter Bidang.

Catatan

Parameter ukuran berjenis unsigned, bukan size_t.

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

Pemetaan rutin teks generik

Rutinitas Tchar.h _UNICODE dan _MBCS tidak ditentukan _MBCS Didefinisikan _UNICODE Didefinisikan
_sntscanf_s _snscanf_s _snscanf_s _snwscanf_s
_sntscanf_s_l _snscanf_s_l _snscanf_s_l _snwscanf_s_l

Persyaratan

Rutin Header yang diperlukan
_snscanf_s, _snscanf_s_l <stdio.h>
_snwscanf_s, _snwscanf_s_l <stdio.h> atau <wchar.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

// crt_snscanf_s.c
// This example scans a string of
// numbers, using both the character
// and wide character secure versions
// of the snscanf function.

#include <stdio.h>

int main( )
{
    char        str1[] = "15 12 14...";
    wchar_t     str2[] = L"15 12 14...";
    char        s1[3];
    wchar_t     s2[3];
    int         i;
    float       fp;

    i = _snscanf_s( str1, 6,  "%s %f", s1, 3, &fp);
    printf_s("_snscanf_s converted %d fields: ", i);
    printf_s("%s and %f\n", s1, fp);

    i = _snwscanf_s( str2, 6,  L"%s %f", s2, 3, &fp);
    wprintf_s(L"_snwscanf_s converted %d fields: ", i);
    wprintf_s(L"%s and %f\n", s2, fp);
}
_snscanf_s converted 2 fields: 15 and 12.000000
_snwscanf_s converted 2 fields: 15 and 12.000000

Baca juga

Spesifikasi Lebar Pemindaian