_setmode

ファイルの変換モードを設定します。

構文

int _setmode (
   int fd,
   int mode
);

パラメーター

fd
ファイル記述子。

mode
新しい変換モード。

戻り値

成功した場合、前の変換モードを返します。

この関数に無効なパラメーターが渡されると、「パラメーターの検証」で説明されているように無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、この関数は-1 を返し、をに設定します。これは errno EBADF 無効なファイル記述子を示します。または EINVAL 、無効な引数を示し mode ます。

これらのリターンコードの詳細については、「」、「」、 _doserrno errno _sys_errlist および _sys_nerr 「」を参照してください。

Remarks

関数は、 _setmode mode によって指定されたファイルの変換モードに設定し fd ます。 _O_TEXT としてを渡すと mode 、テキスト (変換) モードが設定されます。 キャリッジリターンラインフィード (CR-LF) の組み合わせは、入力時に1つのラインフィード文字に変換されます。 ライン フィード文字は、出力時に CR-LF の組み合わせに変換されます。 渡す _O_BINARY バイナリ (無変換) モード。これらの変換は抑制されます。

_O_U16TEXT _O_U8TEXT _O_WTEXT このドキュメントで後述する2番目の例に示すように、、、またはを渡して Unicode モードを有効にすることもできます。

注意事項

Unicode モードは、ワイド印刷関数 (など) 用で wprintf あり、ナロー印刷関数ではサポートされていません。 Unicode モードストリームでナロー print 関数を使用すると、アサートがトリガーされます。

_setmode は、通常、およびの既定の変換モードを変更するために使用され stdin stdout ますが、任意のファイルで使用できます。 を _setmode ストリームのファイル記述子に適用する場合は、 _setmode ストリームに対して入力または出力操作を実行する前に、を呼び出します。

注意事項

ファイルストリームにデータを書き込む場合は、を使用してモードを変更する前に、を使用して明示的にコードをフラッシュし fflush _setmode ます。 コードをフラッシュしないと、予期しない動作が発生することがあります。 ストリームにデータを書き込んでいない場合は、コードをフラッシュする必要はありません。

既定では、この関数のグローバル状態はアプリケーションにスコープが設定されています。 これを変更するには、「 CRT でのグローバル状態」を参照してください。

必要条件

ルーチンによって返される値 必須ヘッダー 省略可能なヘッダー
_setmode <io.h> <fcntl.h>

互換性について詳しくは、「 Compatibility」をご覧ください。

例: を使用して _setmode stdin を変更する

// crt_setmode.c
// This program uses _setmode to change
// stdin from text mode to binary mode.

#include <stdio.h>
#include <fcntl.h>
#include <io.h>

int main( void )
{
   int result;

   // Set "stdin" to have binary mode:
   result = _setmode( _fileno( stdin ), _O_BINARY );
   if( result == -1 )
      perror( "Cannot set mode" );
   else
      printf( "'stdin' successfully changed to binary mode\n" );
}
'stdin' successfully changed to binary mode

例: _setmode を使用して stdout を変更する

// crt_setmodeunicode.c
// This program uses _setmode to change
// stdout to Unicode. Cyrillic and Ideographic
// characters will appear on the console (if
// your console font supports those character sets).

#include <fcntl.h>
#include <io.h>
#include <stdio.h>

int main(void) {
    _setmode(_fileno(stdout), _O_U16TEXT);
    wprintf(L"\x043a\x043e\x0448\x043a\x0430 \x65e5\x672c\x56fd\n");
    return 0;
}

関連項目

ファイルの処理
_creat, _wcreat
fopen, _wfopen
_open, _wopen
_set_fmode