Linux講座にようこそ。このページは「C言語プログラミング入門 - 第14章.ライブラリ関数 - 入出力ライブラリ」です。
C言語ではファイルの入出力のための文はありませんので、入出力はライブラリ関数を使用します。通常、ファイルを取り扱う場合は、次の手順で操作します。
ファイルポインタはファイルを操作するのに必要なデータを、一括して管理する構造体変数のポインタです。この構造体はtypedefにより、ヘッダーファイルのstdio.h中でFILEという型名で宣言されています。(stdio.h中で取り込んでいるヘッダファイルで宣言している場合もあります)従って、ファイルポインタの宣言は次のように行ないます。
なお、標準入出力の場合は、予め次の名前のファイルポインタが用意されており、これらを使って入出力が可能です。なお、これらを使う場合は、オープンとクローズは不要です。
ここで説明する関数は次の通りです。なお、ヘッダファイルとしてはstdio.hが必要です。
| 区分 | 関数名 | 機能概要 |
|---|---|---|
| ファイル操作 | fopen() | ファイルをオープンします。返り値としてファイルポインタが返ります。 |
| fclose() | ファイルをクローズします。 | |
| fflush() | バッファの内容をファイルに出力します。 | |
| freopen() | ファイルのクローズとオープンを行います。 | |
| 文字の入力 | fgetc() | ファイルから1文字入力します。 |
| getc() | ファイルから1文字入力します。 | |
| getchar() | 標準入力から1文字入力します。 | |
| ungetc() | 入力ストリームに1文字戻します。 | |
| 文字の出力 | fputc() | ファイルに1文字出力します。 |
| putc() | ファイルに1文字出力します。 | |
| putchar() | 標準出力に1文字出力します。 | |
| 行の入力 | fgets() | ファイルから行単位に入力します。 |
| gets() | 標準入力から行単位に入力します。 | |
| 行の出力 | fputs() | ファイルに行単位に出力します。 |
| puts() | 標準出力に行単位に出力します。 | |
| 書式入力 | fscanf() | ファイルから書式制御文字列に従い型変換して入力します。 |
| scanf() | 標準入力から書式制御文字列に従い型変換して入力します。 | |
| sscanf() | 文字列を書式制御文字列に従い型変換して、引数に指定した変数に設定します。 | |
| 書式出力 | fprintf() | ファイルに書式制御文字列に従い編集した文字列を出力します。 |
| printf() | 標準出力に書式制御文字列に従い編集した文字列を出力します。 | |
| sprintf() | 書式制御文字列に従い編集した文字列を、引数に指定したchar型の配列(文字列)に設定します。 | |
| ファイルの終端 および、エラーの検出 | feof() | ファイルのEOF(end of file)の状態を調べます。 |
| ferror() | ファイルのエラー状態を調べます。 | |
| clearerr() | ファイルのEOFとエラー状態をクリアします。 | |
| バイナリファイルの入出力 | fread() | ファイルからレコード単位に入力します。 |
| fwrite() | ファイルにレコード単位に出力します。 | |
| ファイル内の位置操作 | fseek() | ファイルの入出力位置を設定します。 |
| ftell() | 現在の入出力位置を取得します。 | |
| rewind() | 入出力位置をファイルの先頭に設定します。 | |
| fgetpos() | 現在の入出力位置を取得します。 | |
| fsetpos() | 入出力位置を設定します。 | |
| バッファ操作 | setvbuf() | バッファリング・モードとバッファ領域を設定します。 |
| setbuf() | バッファ領域を設定します。 | |
| 書式出力 (可変個引数) | vfprintf() | ファイルに書式制御文字列に従い編集した文字列を出力します。 |
| vprintf() | 標準出力に書式制御文字列に従い編集した文字列を出力します。 | |
| vsprintf() | 書式制御文字列に従い編集した文字列を、引数に指定したchar型の配列(文字列)に設定します。 | |
| ファイル削除 および、名称変更 | remove() | ファイルやフォルダを削除します。 |
| rename() | ファイルやフォルダの名称(パス名)を変更します。 | |
| 一時ファイルの操作 | tmpfile() | ユニークな名称(パス名)の一時ファイルを作成します。 |
| tmpnam() | 一時ファイルの名前(パス名)を生成します。 |