Fgets
fgets はC言語の標準Cライブラリにおける、標準入出力ヘッダー(<stdio.h>)で宣言されている FILEポインタから1行分の文字列を取り出す入力関数である。
fgets は本来ファイルから文字列を取り出すことを目的とした関数であるが、最大文字列数を引数に指定する事ができるためバッファオーバーランが発生しにくく、また入力された文字数が最大文字数を超えた場合でも末尾に終端記号が付与されることが保証されている等、標準Cライブラリの中ではかなりセキュアな構造となっているといえる。
これに対し、標準入力用に用意されている関数の中で fgets と同様の機能を実現するものとしてgetsやscanfがあるが、getsは最大文字数を指定できないためバッファオーバーランが防ぐ手段が存在せず、scanfは文字幅指定できるが省略可能であるため開発者のミスで書き忘れる危険性がある等、安全性に問題点を持つものが多い。
このため fgets を標準入力用の関数として gets や scanf の代替として用いることが推奨されている。ただし、fgets を標準入力関数の代替として用いる場合は下記に宣べるような点に注意しなければならない。