10

GNU Cプログラミングチュートリアルから:

( fgets"file get string") 関数は gets 関数に似ています。この関数は推奨されていません。つまり、廃止されており、危険なので使用しないことを強くお勧めします。入力データに null 文字が含まれていると判断できないため、危険です。fgetsデータに null を含めることができないことがわかっている場合を除き、使用しないでください。ユーザーが編集したファイルを読み取るために使用しないでください。ユーザーがヌル文字を挿入した場合は、適切に処理するか、明確なエラー メッセージを出力する必要があります。可能な場合は常に getlineorgetdelimの代わりに使用してください。fgets

または;fgetsに遭遇すると関数が停止すると思いました。入力を適切に処理する必要があるのに、なぜこのマニュアルページはヌルバイトが「危険」であると示唆しているのですか? さらに、との違いは何ですか? また、関数はC99または将来の C 標準で非推奨と見なされますか?\0\nfgetsgetlinefgetsfgets

4

2 に答える 2

7

これは単なる GNU プロパガンダです。正式な意味ではfgets非推奨ではありません。getsただし、危険で非推奨です。

于 2013-05-01T17:34:43.963 に答える