fgetcとは?ファイルから1文字を読む基本と使い方をやさしく解説共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
fgetcとは?ファイルから1文字を読む基本と使い方をやさしく解説共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢: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
getcfgetc の別名になることがある、実装に依存同様に文字の 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では改行処理に差があります。

インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
14446viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2407viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
1067viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
1026viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
928viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
895viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
831viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
830viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
794viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
781viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
714viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
688viws
xlsmとは?初心者でも分かるExcelのマクロ付きファイルの基本共起語・同意語・対義語も併せて解説!
589viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
569viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
562viws
countifとは?初心者でもすぐ使える基本と応用ガイド共起語・同意語・対義語も併せて解説!
547viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
513viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
491viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
471viws
googleドキュメントとは?初心者が今日から使いこなす基本ガイド共起語・同意語・対義語も併せて解説!
468viws

新着記事

インターネット・コンピュータの関連記事