perror
, _wperror
エラー メッセージを印刷します。
構文
void perror(
const char *message
);
void _wperror(
const wchar_t *message
);
パラメーター
message
印刷する文字列メッセージ。
解説
perror
関数は、エラー メッセージを stderr
に印刷します。 _wperror
関数は、 _perror
関数のワイド文字バージョンです。 message
関数の引数 _wperror
は、ワイド文字列です。 それ以外では、_wperror
と _perror
の動作は同じです。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
汎用テキスト ルーチンのマップ
TCHAR.H のルーチン | _UNICODE と _MBCS が定義されていない |
_MBCS が定義されている |
_UNICODE が定義されている |
---|---|---|---|
_tperror |
perror |
perror |
_wperror |
message
が最初に印刷され、コロン、エラーが発生した最後のライブラリの呼び出しのシステム エラー メッセージ、改行文字がそれに続きます。 message
が null ポインター、または null 文字列へのポインターである場合、perror
はシステム エラー メッセージのみを印刷します。
エラー番号は変数 errno
(ERRNO で定義) に格納されます。H). システム エラー メッセージには、エラー番号で並べ替えられたメッセージの配列である変数 _sys_errlist
を介してアクセスします。 perror
は、errno
の値を _sys_errlist
のインデックスとして使用して、適切なエラー メッセージを印刷します。 変数 _sys_nerr
の値は、 _sys_errlist
配列内の要素の最大数として定義されます。
正確な結果を得るには、ライブラリ ルーチンからエラーが返された直後に perror
を呼び出します。 そうしないと、後続の呼び出しが errno
の値を上書きする可能性があります。
Windows オペレーティングシステムでは、ERRNO.H に一覧表示されている一部の errno
の値は使用されていません。 これらの値は、UNIX オペレーティング システムで使用するために予約されたものです。 Windows オペレーティング システムで使用されるerrno
値の一覧については、「errno
、_doserrno
、_sys_errlist
、および_sys_nerr
」を参照してください。 perror
は、これらのプラットフォームで使用されていないすべての errno
の値に対して空白の文字列を印刷します。
要件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
perror |
<stdio.h> または <stdlib.h> |
_wperror |
<stdio.h> または <wchar.h> |
互換性の詳細については、「 Compatibility」を参照してください。
ライブラリ
C ランタイム ライブラリのすべてのバージョン。
例
// crt_perror.c
// compile with: /W3
/* This program attempts to open a file named
* NOSUCHF.ILE. Because this file probably doesn't exist,
* an error message is displayed. The same message is
* created using perror, strerror, and _strerror.
*/
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <share.h>
int main( void )
{
int fh;
if( _sopen_s( &fh, "NOSUCHF.ILE", _O_RDONLY, _SH_DENYNO, 0 ) != 0 )
{
/* Three ways to create error message: */
perror( "perror says open failed" );
printf( "strerror says open failed: %s\n",
strerror( errno ) ); // C4996
printf( _strerror( "_strerror says open failed" ) ); // C4996
// Note: strerror and _strerror are deprecated; consider
// using strerror_s and _strerror_s instead.
}
else
{
printf( "open succeeded on input file\n" );
_close( fh );
}
}
perror says open failed: No such file or directory
strerror says open failed: No such file or directory
_strerror says open failed: No such file or directory
関連項目
プロセスと環境の制御
clearerr
ferror
strerror
、 _strerror
、 _wcserror
、 __wcserror