

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
fgetcとは
fgetcはC言語の標準ライブラリにある関数の一つで、ファイルを1文字ずつ読み込むとても基本的で重要な機能です。戻り値は int 型で、読み取った文字の値を表すのが通常ですが、ファイルの末尾やエラーの時には EOF という特別な値が返されます。
使い方の基本
使い方の基本は次の三つです。ファイルを開く、fgetc で1文字ずつ読む、ファイルを閉じる。ここで重要なのは 戻り値を int 型で受け取り、EOF の判定を必ず行うことです。もし char 型に直接代入すると EOF を区別できなくなることがあります。
例としてファイル data.txt を開き、1文字ずつ読み取る基本的な手順は以下のようになります。
FILE *fp = fopen("data.txt","r"); if(fp != NULL) { int ch; while((ch = fgetc(fp)) != EOF) { /* 読み取った文字を使う */ } fclose(fp); }
fgetc の比較表
| 関数名 | 説明 | 戻り値 |
|---|---|---|
| fgetc | ファイルから1文字を読み取る | 読み取った文字の int 値、EOF のときは EOF |
| getc | fgetc の別名になることがある、実装に依存 | 同様に文字の int 値、EOF |
| getchar | 標準入力から1文字を読む | 同様に int |
fgetc を使う時の注意点
必ず fopen のモードを適切に選ぶこと、読み取り専用なら "r"。開くに失敗した場合は NULL が返り、エラーチェックを忘れずに行うこと。
最後に、fgetc はファイルの内容を1文字ずつ丁寧に読み取る基本的な手段です。初心者のうちはループの回し方と EOF の扱いをしっかり押さえることが大切です。必要に応じてエラーハンドリングやファイルのオープン時の権限についても学ぶと、実務的なプログラムに近づきます。
追加のポイント
さらに理解を深めるには getc と getchar の違い を意識すると良いです。getc は時にマクロとして実装され、コードの挙動に微妙な差が生じることがあります。こうした点を知っておくと、移植性の高いコードを書く助けになります。
まとめとして、fgetc は「ファイルから1文字を読む最小単位の操作」を提供する基本的な関数です。初学者のうちは読み取りのループと EOF の扱いに注意すれば、ファイル処理の基礎が身につきます。
fgetcの同意語
- fgetc
- ファイルストリームから1文字を読み取る、標準Cライブラリの関数。戻り値は読み取った文字を表すintで、EOFで終端やエラーを示すことがある。
- getc
- fgetcとほぼ同じ動作をする別名関数。FILE* streamから1文字を読み取る役割を持つ。実装によってはマクロとして提供されることもある。
- getchar
- 標準入力(stdin)から1文字を読み取る関数。fgetc(stdin)と同等の挙動。
- fgetc_unlocked
- fgetcの unlocked版。ロックを省略して高速化するが、スレッドセーフではない点に注意。
- getc_unlocked
- getcのunlocked版。高速化のためにロックを行わないバージョン。
- getchar_unlocked
- getcharのunlocked版。標準入力からの読み取りをロックなしで高速に行う関数。
- fgetwc
- ファイルストリームから1文字のワイド文字を読み取る。戻り値は wint_t。
- getwc
- FILE*からワイド文字を1つ読み取る関数。fgetwcと同等の動作をすることが多い。
- getwc_unlocked
- getwcのunlocked版。スレッドセーフでない代わりに高速化される。
- fgetwc_unlocked
- fgetwcのunlocked版。ワイド文字の読み取りをロックなしで高速化。
- getwchar
- 標準入力から1文字のワイド文字を読み取る関数。getwc(stdin)と等価。
- getwchar_unlocked
- getwcharのunlocked版。標準入力をロックなしで高速に読み取る。
- fgetc_s
- 安全な版のfgetc。境界チェックなどの追加保証を提供する実装がある(C11 Annex K 等)。
- getc_s
- 安全な版のgetc。境界チェック機能を付与した実装がある。
- fgetwc_s
- 安全な版のfgetwc。境界チェック対応の実装がある場合に利用される。
- read
- 低レベルのファイルディスクリプタから1バイトを読み取るシステムコール。FILE*ではなく fd を用いる点が異なるが、文字単位の読み取りの代替として使われることがある。
fgetcの対義語・反対語
- fputc
- ファイルへ1文字を書き込む関数です。fgetcがファイルから1文字を読み取るのに対し、同じストリームへ文字を送る“反対の操作”と考えると分かりやすいです。
- putc
- fputcとほぼ同じ機能を持つ書き込み関数(マクロ/関数)。ファイルへ1文字を追加で書く操作です。
- fputs
- ファイルへ文字列を連続して書き込む関数。fgetcの読み取りの反対として、文字列をファイルへ出力します。
- fwrite
- 任意のバイト列をファイルへ書き出す高機能な関数。fgetcが1文字ずつ読むのに対し、ブロック単位で書き出せる点が特徴です。
- putchar
- 標準出力へ1文字を書き込む関数。fgetcの読み取りを出力へ送る“対になる操作”として使われます。
- puts
- 標準出力へ文字列を改行付きで書き出す関数。fgetcで読み取った文字列を出力するようなイメージの反対操作です。
- fprintf
- フォーマット済みデータをファイルへ書き込む関数。単なる文字1つではなく、整形済みのデータをファイルへ出力します。
- ungetc
- 直前に読み取った1文字をストリームに戻す関数。読み取りを“取り消す”逆の操作の一例です。
- read
- POSIX系のシステムコールでファイルからデータを読み出します。fgetcのような高水準関数の“読み”の対になる書き込み側の操作として挙げられます。
- write
- POSIX系のシステムコールでデータをファイルへ書き込む。fgetcの読み取りの逆、書き込みを直接行う基本操作です。
- fread
- ファイルから任意のサイズのデータを読み出す関数。対になる書き込み関数としてfwriteとセットでよく使われます。
- fseek
- ファイル内の読み取り位置を移動させる関数。直接の“反対”ではないものの、読み取り開始位置を変える操作として、読みの操作を補完します。
fgetcの共起語
- ファイルポインタ
- ファイルを読み書きする対象を表すポインタ。FILE* 型で、fopen などの操作で取得し、fgetc などの入出力関数へ渡してデータを読み取る。
- FILE
- ファイルを表すデータ型。内部実装は隠され、ファイル操作の基本となる窓口になる。
- stdio.h
- fgetc など標準入出力の機能が宣言されているヘッダファイル。
- fopen
- ファイルを開く関数。読み取りモードで開いた場合、読み取り用の FILE* を返す。
- fclose
- 開いたファイルを閉じる関数。使い終わったらリソースを解放するために必ず呼ぶ。
- stdin
- 標準入力ストリームを示す FILE*。キーボード入力などを読むときの読み取り元。
- EOF
- End Of File の略。ファイル終端や読み取りエラーを示す特別な戻り値。
- 戻り値
- fgetc の返り値は int 型で、読み取った文字のコードを表す。EOF の場合は特別な値になる。
- int型
- fgetc の戻り値の型。EOF と通常の文字コードを区別するために設計されている。
- 文字
- 1 文字分のデータ。fgetc はその文字コードを整数として返す。
- バッファ
- 内部でデータを一時的に蓄える領域。fgetc はこのバッファから読み出すことが多い。
- 標準入出力
- C 言語の入出力機能の総称。stdio.h に含まれ、fgetc もその一部。
- 読み取りループ
- ファイルを 1 文字ずつ読み取り EOF まで繰り返す一般的な処理パターン。
- getchar
- 標準入力から 1 文字を読み取る関数。fgetc(stdin) の短い書き方として使われることがある。
- fgetc_unlocked
- fgetc の高速版で、スレッドセーフでない代わりに速く動作する。マルチスレッド環境で注意が必要。
- fgets
- 1 行を文字列として読み取る関数。fgetc とは異なる用途だが、標準入出力の読み取りで併用されることが多い。
- ファイル読み込み
- ファイルからデータを読み取る操作全般。fgetc は1文字ずつ読む基本的な手段のひとつ。
- C言語標準ライブラリ
- C 言語の標準ライブラリの総称。stdio.h を含む範囲で、基本的な I/O を提供する。
- ストリーム
- データの入出力を抽象化した概念。fgetc はこのストリームから1文字を読み出す。
- モード
- fopen のファイルオープンモード。例として読み取り専用モード('r')を指定すると、fgetc で読み取れる。
fgetcの関連用語
- fgetc
- C標準ライブラリのファイル読み取り関数。FILE*ストリームから1文字を読み込み、その文字コードをintで返します。終端やエラー時はEOFを返します。
- getc
- fgetcと同じ機能を提供するマクロまたは関数。実装によっては若干挙動が異なることがありますが、基本的にはfgetcと同等に使えます。
- getchar
- 標準入力(stdin)から1文字を読み取る関数。実質的にはfgetc(stdin)と同じ動作をします。
- stdin
- 標準入力を表すFILE*。キーボード入力やリダイレクトされた入力を受け取るデフォルトのストリームです。
- fopen
- ファイルを開いてFILE*を取得する関数。モード文字列で読み取り・書き込み・追加などを指定します。
- fclose
- 開いたファイルストリームを閉じ、資源を解放します。
- FILE
- ファイル操作の対象となるストリームを表す型。fopenで得られるポインタの型です。
- EOF
- ファイルやストリームの終端を示す定数。fgetcなどが終端に達したときに返します。
- feof
- ストリームがEOF状態になっているかを調べる関数。0以外なら終端に到達しています。
- ferror
- ストリームでエラーが発生しているかを調べる関数。非0ならエラー発生を示します。
- clearerr
- ストリームのEOF・エラー状態をクリアします。再度読み書きを行う前に状態をリセットします。
- ungetc
- 読み込んだ1文字をストリームに戻す関数。1文字だけ戻すことが可能です。
- ftell
- ファイル内の現在の読み書き位置を長整数として返します。
- fseek
- ストリームの読み書き位置を移動させる関数。基準はSEEK_SET/SEEK_CUR/SEEK_ENDを使います。
- fgetpos
- 現在の位置をfpos_t型のオブジェクトに保存します。
- fsetpos
- 保存しておいた位置へストリームを戻します。
- SEEK_SET
- fseekの基準位置をファイルの先頭に設定します。
- SEEK_CUR
- fseekの基準位置を現在位置からの相対位置に設定します。
- SEEK_END
- fseekの基準位置をファイルの末尾に設定します。
- fscanf
- フォーマットを使ってファイルからデータを読み取る関数。複数の値を同時に読み取れます。
- fgets
- ファイルから指定した文字数まで文字列を読み込み、バッファへ格納します(改行を含むことがあります)。
- fread
- ファイルから指定した要素数分のデータをバッファへ読み取ります。バイナリデータの読み取りに適しています。
- putc
- ファイルストリームへ1文字を書き込む関数。fputcと同様の役割です。
- putchar
- 標準出力へ1文字を書き込む関数。getcharの出力版と言えます。
- getc_unlocked
- ロックなしで文字を読み取る高性能なバージョン(主にPOSIX系環境で提供)。マルチスレッド時は注意が必要です。
- fgetc_s
- 境界チェック付きの安全なfgetc系関数。C11 Annex Kの一部として実装依存です。
- バッファリング
- stdioは内部でデータをバッファに貯めてから実際の入出力を行います。fgetcもこのバッファを通じて読みます。
- ストリーム
- ファイル、標準入出力、その他の入出力先を抽象化したデータの流れ。FILE*で表されます。
- モード文字列
- fopenでファイルを開く際の、読み取り・書き込み・追記などの動作を指定する文字列。例: "r", "w", "a", "r+" など。
- バイナリモード
- ファイルを文字だけでなく生データとして扱うモード。例: "rb", "wb", "ab"。Windowsなどで区別されます。
- テキストモード
- 人間が読む文字列として扱うモード。UNIXやLinuxでは通常同じだが、Windowsでは改行処理に差があります。



















