名前空間
変種
操作

ファイル入出力

提供: cppreference.com
< c
 
 
ファイル入出力
関数
ファイルアクセス
直接入出力
書式なし入出力
(C11以前)(C11およびそれ以降)
(C95)(C95)
(C95)
(C95)(C95)
(C95)
(C95)
書式付き入力
書式付き出力
ファイル位置操作
エラー処理
ファイルに対する操作
 

ヘッダ <stdio.h> は汎用のファイル操作サポートを提供し、ナロー文字の入出力機能を供給します。

ヘッダ <wchar.h> はワイド文字入出力機能を持つ関数を供給します。

入出力ストリームは FILE 型のオブジェクトで、 FILE* 型のポインタを通してのみアクセスしたり操作することができます (有効な FILE* を逆参照およびコピーすることで FILE 型のローカルオブジェクトを作成することは可能かもしれませんが、そのようなコピーのアドレスを入出力関数で使用することは未定義動作です)。 各ストリームには外部の物理デバイス (ファイル、標準入力、プリンタ、シリアルポートなど) が関連付けられています。

入出力ストリームは書式なしおよび書式付きの入力および出力の両方で使うことができます。 これらはロケールの影響を受け、ワイド文字とマルチバイト文字の変換が必要に応じて行われる場合があります。 すべてのストリームは最も最近に setlocale で設定された同じひとつのロケールオブジェクトを参照します。

デバイスにアクセスするために必要な情報 (POSIX のファイル記述子など) はシステム固有ですが、各ストリームオブジェクトは以下の情報を保持しています。

1) (C95) 文字幅: 未設定、ナロー、ワイド
2) バッファリング状態: バッファリングなし、行バッファリング、完全バッファリング
3) バッファ: ユーザから提供される外部のバッファに置き換えることができます
4) 入出力モード: 入力、出力、更新
5) バイナリモードとテキストモードの区別
6) ファイル終端状態指示子
7) エラー状態指示子
8) ファイル位置指示子 (fpos_t 型のオブジェクト)、ワイド文字ストリームではパース状態 (mbstate_t(C95) 型のオブジェクト) を含みます
9) (C11) 複数のスレッドで読み書きする場合のデータ競合を避けるために使用する再入可能なロック

目次

[編集] ナロー指向とワイド指向

新たに開かれたストリームは無指向です。 fwide または任意の入出力関数の最初の呼び出しにより指向が確立されます。 ワイド入出力関数はストリームをワイド指向に設定し、ナロー入出力関数はストリームをナロー指向に設定します。 一度設定されると、指向は freopen でのみ変更できます。 ナロー入出力関数をワイド指向のストリームに対して呼ぶことはできませんし、ワイド入出力関数をナロー指向のストリームに対して呼ぶことはできません。 ワイド入出力関数は mbrtowc および wcrtomb を使用したかのようにワイド文字とマルチバイト文字を変換します。 プログラム内で有効なマルチバイト文字列と異なり、ファイル内のマルチバイト文字シーケンスにはNULL文字が埋め込まれる場合があり、初期シフト状態で開始したり初期シフト状態で終了したりする必要はありません。

POSIX は、ストリームの指向がワイドになった時点で、現在設定されているCロケールの LC_CTYPE ファセットをストリームオブジェクト内に格納し、それを指向が変わるまで、以降の setlocale の呼び出しにかからわず、そのストリームの将来のすべての入出力に使用することを要求しています。

[編集] バイナリモードとテキストモード

テキストストリームは行 (ゼロ個以上の文字と行末文字 '\n') に構成される順序付きの文字の並びです。 最終行に行末文字 '\n' が必要かどうかは処理系定義です。 文字はOSのテキスト表現の規約に沿うよう、入出力時に追加されたり変更されたり削除されたりする場合があります (特に Windows OS のCストリームでは出力時に \n\r\n に変換され、入力時に \r\n\n に変換されます)。

テキストストリームからのデータの読み取りは、以下のすべての条件を満たす場合に限り、以前にそのストリームに書き込んだデータと等しいことが保証されます。

  • データは印刷文字および制御文字 \t および \n のみで構成されなければなりません (特に Windows OS では文字 '\0x1A' は入力を終端させます)
  • \n の直前に空白文字があってはいけません (\n の直前に書き出された空白文字は読み取り時に消える場合があります)
  • 最後の文字は \n でなければなりません

バイナリストリームは内部データを透過的に記録できる順序付きの文字の並びです。 バイナリストリームから読み取ったデータは、以前にそのストリームに書き出したデータと常に等しくなります。 処理系はストリームの最後にNULL文字をいくつか追加することだけが許されています。 ワイドバイナリストリームは初期シフト状態で終わる必要はありません。

POSIX の処理系はテキストストリームとバイナリストリームを区別しません (\n や他のいかなる文字にも特別なマッピングはありません)。

[編集] 関数

ファイルアクセス
ヘッダ <stdio.h> で定義
ファイルを開きます
(関数) [edit]
既存のストリームを別の名前で開きます
(関数) [edit]
ファイルを閉じます
Original:
closes a file
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(関数) [edit]
出力ストリームと実際のファイルを同期します
(関数) [edit]
ファイルストリーム用のバッファを設定します
Original:
sets the buffer for a file stream
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(関数) [edit]
ファイルストリーム用のバッファとそのサイズを設定します
Original:
sets the buffer and its size for a file stream
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(関数) [edit]
ヘッダ <wchar.h> で定義
(C95)
ファイルストリームをワイド指向またはナロー指向に設定します
(関数) [edit]
直接入出力
ヘッダ <stdio.h> で定義
ファイルから読み込みます
Original:
reads from a file
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(関数) [edit]
ファイルに書き込みます
Original:
writes to a file
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(関数) [edit]
書式なし入出力
ナロー文字
ヘッダ <stdio.h> で定義
ファイルストリームから文字を取得します
Original:
gets a character from a file stream
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(関数) [edit]
ファイルストリームから文字列を取得します
Original:
gets a character string from a file stream
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(関数) [edit]
ファイルストリームに文字を書き込みます
Original:
writes a character to a file stream
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(関数) [edit]
ファイルストリームに文字列を書き込みます
Original:
writes a character string to a file stream
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(関数) [edit]
stdinから文字を読み取ります
Original:
reads a character from stdin
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(関数) [edit]
(C11で削除)(C11およびそれ以降)
stdinから文字列を読み取ります
(関数) [edit]
stdoutに文字を書き込みます
Original:
writes a character to stdout
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(関数) [edit]
stdoutに文字列を書き込みます
Original:
writes a character string to stdout
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(関数) [edit]
ファイルストリームに文字を戻します
(関数) [edit]
ワイド文字
ヘッダ <wchar.h> で定義
ファイルストリームからワイド文字を取得します
(関数) [edit]
(C95)
ファイルストリームからワイド文字列を取得します
(関数) [edit]
ファイルストリームにワイド文字を書き込みます
(関数) [edit]
(C95)
ファイルストリームにワイド文字列を書き込みます
(関数) [edit]
stdinからワイド文字を読み込みます
(関数) [edit]
stdoutにワイド文字を書き込みます
(関数) [edit]
ファイルストリームにワイド文字を戻します
(関数) [edit]
書式付き入出力
ナロー文字
ヘッダ <stdio.h> で定義
stdin、ファイルストリームまたはバッファから書式付き入力を読み取ります
(関数) [edit]
stdin、ファイルストリームまたはバッファから可変個引数リストを使用して書式付き入力を読み取ります
(関数) [edit]
stdout、ファイルストリームまたはバッファに書式付き出力を書き出します
(関数) [edit]
stdout、ファイルストリームまたはバッファに可変個引数リストを使用して書式付き出力を書き出します
(関数) [edit]
ワイド文字
ヘッダ <wchar.h> で定義
stdin、ファイルストリームまたはバッファから書式ワイド文字入力を読み取ります
(関数) [edit]
stdin、ファイルストリームまたはバッファから可変個引数リストを使用して書式付きワイド文字入力を読み取ります
(関数) [edit]
stdout、ファイルストリームまたはバッファに書式付きワイド文字出力を書き出します
(関数) [edit]
stdout、ファイルストリームまたはバッファに可変個引数リストを使用して書式付きワイド文字出力を書き出します
(関数) [edit]
ファイル位置操作
ヘッダ <stdio.h> で定義
現在のファイル位置指示子を返します
Original:
returns the current file position indicator
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(関数) [edit]
ファイル位置指示子を取得します
Original:
gets the file position indicator
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(関数) [edit]
ファイル位置指示子をファイル内の指定の場所に移動します
(関数) [edit]
ファイル位置指示子をファイル内の指定の場所に移動します
(関数) [edit]
ファイル位置指示子をファイルの先頭に移動します
(関数) [edit]
エラー処理
ヘッダ <stdio.h> で定義
エラーをクリアします
Original:
clears errors
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(関数) [edit]
ファイルの終端をチェックします
(関数) [edit]
ファイルのエラーをチェックします
Original:
checks for a file error
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(関数) [edit]
現在のエラーに対応する文字列を stderr に出力します
(関数) [edit]
ファイルに対する操作
ヘッダ <stdio.h> で定義
ファイルを消去します
(関数) [edit]
ファイルの名前を変更します
Original:
renames a file
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(関数) [edit]
一時ファイルへのポインタを返します 
(関数) [edit]
一意なファイル名を返します
(関数) [edit]

[編集]

ヘッダ <stdio.h> で定義
定義
FILE C の入出力ストリームを制御するために必要なすべての情報を保持できる型
fpos_t ファイルの位置とマルチバイトパース状態を唯一に特定できる型

[編集] マクロ

ヘッダ <stdio.h> で定義
stdinstdoutstderr
入力ストリームに関連付けられた FILE* 型の式
出力ストリームに関連付けられた FILE* 型の式
エラー出力ストリームに関連付けられた FILE* 型の式
(マクロ定数)
EOF
負の値を持つ int 型の整数定数式
(マクロ定数)
FOPEN_MAX
同時にオープンできるファイルの最大数
(マクロ定数)
FILENAME_MAX
サポートされている最も長いファイル名を保持するために必要な char 配列のサイズ
(マクロ定数)
BUFSIZ
setbuf() で使用するバッファのサイズ
(マクロ定数)
_IOFBF_IOLBF_IONBF
完全バッファリングを表す setvbuf() に渡す引数
行バッファリングを表す setvbuf() に渡す引数
バッファリングなしを表す setvbuf() に渡す引数
(マクロ定数)
SEEK_SETSEEK_CURSEEK_END
ファイルの先頭からシークすることを表す fseek() に渡す引数
現在のファイル位置からシークすることを表す fseek() に渡す引数
ファイルの終端からシークすることを表す fseek() に渡す引数
(マクロ定数)
TMP_MAXTMP_MAX_S
(C11)
tmpnam で生成できる一意なファイル名の最大数
tmpnam_s で生成できる一意なファイル名の最大数
(マクロ定数)
L_tmpnamL_tmpnam_s
(C11)
tmpnam の結果を保持するために必要な char 配列のサイズ
tmpnam_s の結果を保持するために必要な char 配列のサイズ
(マクロ定数)

[編集] 参考文献

  • C11 standard (ISO/IEC 9899:2011):
  • 7.21 Input/output <stdio.h> (p: 296-339)
  • 7.29 Extended multibyte and wide character utilities <wchar.h> (p: 402-446)
  • 7.31.11 Input/output <stdio.h> (p: 456)
  • 7.31.16 Extended multibyte and wide character utilities <wchar.h> (p: 456)
  • K.3.5 Input/output <stdio.h> (p: 586-603)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.19 Input/output <stdio.h> (p: 262-305)
  • 7.24 Extended multibyte and wide character utilities <wchar.h> (p: 348-392)
  • 7.26.9 Input/output <stdio.h> (p: 402)
  • 7.26.12 Extended multibyte and wide character utilities <wchar.h> (p: 402)
  • C89/C90 standard (ISO/IEC 9899:1990):
  • 4.9 INPUT/OUTPUT <stdio.h>
  • 4.13.6 Input/output <stdio.h>

[編集] 関連項目

Cスタイルのファイル入出力C++リファレンス