|
gets は、C言語における標準入力から1行分の文字列を取り出す関数である。この関数はバッファオーバーランを防ぐことが不可能という致命的な脆弱性を持っており、2011年の改定のC11の標準CライブラリやC++14の標準C++ライブラリより廃止された。 == 形式 == C11の1つ前の版の標準規格であるC99までにおいて、 char *gets(char *s); gets は標準入力から改行 ('\n') が現れるまでデータを読み込み、引数で渡された s に格納する、このとき改行文字は終端記号 ('\0') に置き換える。戻り値にはエラーが発生した場合は NULL を、それ以外は s を返す。 scanf の %d や %s と異なり、改行文字は読み込んだ後で終端記号に書き換えるためストリームに改行文字は残らない。このため scanf のような改行文字の処理は必要とはしない。逆に scanf で呼ばれた直後に gets を呼ぶと、入力ストリームの先頭に改行文字が残っているため gets は空の文字列を返してしまう。このため scanf と混在して使うべきではないとされている〔http://www.kouno.jp/home/c_faq/c12.html#18〕。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Gets」の詳細全文を読む スポンサード リンク
|