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_s
errnum
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_s
dan __wcserror_s
masing-masing adalah versi karakter lebar dan _strerror_s
strerror_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
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