私には、特に C プログラミング言語を学んでいる人々は、gets
stdin からデータを読み込むために関数をまだ使用しているようです。C11標準から1つ削除されましたが、 cppreferenceの免責事項には次のように記載されています。
gets() 関数は境界チェックを実行しないため、この関数はバッファ オーバーフロー攻撃に対して非常に脆弱です。安全に使用することはできません (標準入力に表示される内容を制限する環境でプログラムを実行しない限り)。このため、この関数は C99 標準の 3 番目の正誤表で非推奨になり、C11 標準では完全に削除されました。fgets() と gets_s() は、推奨される代替品です。
gets() を使用しないでください。
ただし、これは、より現代的なプログラミング哲学を思いついた新しい問題ではないようです。それは常に壊れていて、プログラムがクラッシュする原因となっていました。「標準入力に表示できるものを制限する環境」が何を意味するのかわかりません。
それで、それは過去に役に立ちましたか?または、それが C の以前の標準および標準化前のバージョンに追加された理由は何ですか?
(1) ... または少なくとも、読み取る最大長を示す追加のパラメーターを持つように変更されました。しかし、私は古い署名について尋ねており、ポインタしか受け取っていません。