strerror_s, _strerror_s, _wcserror_s, __wcserror_s

Dapatkan pesan kesalahan sistem (strerror_s, _wcserror_s) atau cetak pesan kesalahan yang disediakan pengguna (_strerror_s, __wcserror_s). Fungsi-fungsi ini adalah versi strerror, _strerror, _wcserror, __wcserror dengan peningkatan keamanan seperti yang dijelaskan dalam Fitur keamanan di CRT.

Sintaks

errno_t strerror_s(
   char *buffer,
   size_t sizeInBytes,
   int errnum
);
errno_t _strerror_s(
   char *buffer,
   size_t sizeInBytes,
   const char *strErrMsg
);
errno_t _wcserror_s(
   wchar_t *buffer,
   size_t sizeInWords,
   int errnum
);
errno_t __wcserror_s(
   wchar_t *buffer,
   size_t sizeInWords,
   const wchar_t *strErrMsg
);
template <size_t size>
errno_t strerror_s(
   char (&buffer)[size],
   int errnum
); // C++ only
template <size_t size>
errno_t _strerror_s(
   char (&buffer)[size],
   const char *strErrMsg
); // C++ only
template <size_t size>
errno_t _wcserror_s(
   wchar_t (&buffer)[size],
   int errnum
); // C++ only
template <size_t size>
errno_t __wcserror_s(
   wchar_t (&buffer)[size],
   const wchar_t *strErrMsg
); // C++ only

Parameter

buffer
Buffer untuk menahan string kesalahan.

sizeInBytes
Jumlah byte dalam buffer.

sizeInWords
Jumlah kata dalam buffer.

errnum
Nomor salah.

strErrMsg
Pesan yang disediakan pengguna.

Nilai hasil

Nol jika berhasil, kode kesalahan pada kegagalan.

Kondisi kesalahan

buffer sizeInBytes/sizeInWords strErrMsg Isi dari buffer
NULL any any n/a
any 0 any tidak dimodifikasi

Keterangan

Fungsinya strerror_s aman untuk utas.

Fungsi memetakan strerror_serrnum ke string pesan kesalahan, mengembalikan string di buffer. _strerror_s tidak mengambil nomor kesalahan; ini menggunakan nilai errno saat ini untuk menentukan pesan yang sesuai. Pesan tidak dicetak atau ditampilkan oleh strerror_s atau _strerror_s. Untuk menghasilkan pesan, Anda perlu memanggil fungsi output seperti fprintf:

if (( _access( "datafile",2 )) == -1 )
{
   _strerror_s(buffer, 80, NULL);
   fprintf( stderr, buffer );
}

Jika strErrMsg adalah NULL, _strerror_s mengembalikan string yang buffer berisi pesan kesalahan sistem untuk panggilan pustaka terakhir yang menghasilkan kesalahan. Jika strErrMsg tidak sama dengan NULL, maka _strerror_s mengembalikan string yang buffer berisi (dalam urutan) pesan string Anda, titik dua, spasi, pesan kesalahan sistem untuk panggilan pustaka terakhir yang menghasilkan kesalahan. Pesan string Anda dapat memiliki panjang paling banyak 94 karakter.

Fungsi-fungsi ini memotong pesan kesalahan jika panjangnya melebihi ukuran buffer - 1. String yang dihasilkan selalu dihentikan buffer null.

Nomor kesalahan aktual untuk _strerror_s disimpan dalam variabel errno. Pesan kesalahan sistem diakses melalui variabel _sys_errlist, yang merupakan array pesan yang diurutkan berdasarkan nomor kesalahan. _strerror_s mengakses pesan kesalahan yang sesuai dengan menggunakan errno nilai sebagai indeks ke variabel _sys_errlist. Nilai variabel _sys_nerr didefinisikan sebagai jumlah maksimum elemen dalam _sys_errlist array. Untuk menghasilkan hasil yang akurat, panggil _strerror_s segera setelah pustaka rutin kembali dengan kesalahan. Jika tidak, panggilan berikutnya ke strerror_s atau _strerror_s dapat menimpa errno nilai.

_wcserror_sdan __wcserror_s masing-masing adalah versi karakter lebar dan _strerror_sstrerror_s , .

Fungsi-fungsi ini memvalidasi parameternya. Jika buffer adalah NULL atau jika parameter ukuran adalah 0, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter . Jika eksekusi diizinkan untuk melanjutkan, fungsi kembali EINVAL dan diatur errno ke EINVAL.

_strerror_s, _wcserror_s, dan __wcserror_s bukan bagian dari definisi ANSI tetapi malah merupakan ekstensi Microsoft untuk definisi tersebut. Jangan gunakan di mana portabilitas diinginkan; untuk kompatibilitas ANSI, gunakan strerror_s sebagai gantinya.

Di C++, menggunakan fungsi-fungsi ini disederhanakan oleh kelebihan beban templat; kelebihan beban dapat menyimpulkan panjang buffer secara otomatis, menghilangkan kebutuhan untuk menentukan argumen ukuran. Untuk informasi selengkapnya, lihat Mengamankan kelebihan beban templat.

Versi pustaka debug dari fungsi-fungsi ini terlebih dahulu mengisi buffer dengan 0xFE. Untuk menonaktifkan perilaku ini, gunakan _CrtSetDebugFillThreshold.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Pemetaan rutin teks generik

TCHAR. Rutinitas H _UNICODE dan _MBCS tidak ditentukan _MBCS Didefinisikan _UNICODE Didefinisikan
_tcserror_s strerror_s strerror_s _wcserror_s

Persyaratan

Rutin Header yang diperlukan
strerror_s, _strerror_s <string.h>
_wcserror_s, __wcserror_s <string.h> atau <wchar.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

Lihat contoh untuk perror.

Baca juga

Manipulasi string
clearerr
ferror
perror, _wperror