の違いScanfとfgetsの違い

Anonim

Scanfとfgets

Scanfとfgetsは、Cプログラミングでよく使用される2つの関数フレーズで、他のプログラミング言語で実装されています。 Scanfはスキャンフォーマットを指します。 Scanfは有効なトークンの入力に注目し、指定されたフォーマットに応じて解析します。実行の違いとプロセス全体の全体的な実装に役立つコードは、両者の違いの洞察を与える良い方法です。一方、Fgetsは、他のライブラリで使用されるように、最初から普及しているCライブラリの機能です。

<! - 1 - >

fgetsの使用は、現代のプログラミングでは、下位互換性を可能にするC89とC99の標準に残されているので、推奨されません。それでも、全体的な結果が実行可能なコードであることを確認するためには、fgetsの使用が非常にうまく対処されなければなりません。したがって、fgetsを使用するプログラマは、十分なバッファを確保するのに必要な文字数の上限を知っていなければなりません。これは、データの事前知識なしでは難しい課題です。バッファオーバーフローが発生した場合、コンピュータのセキュリティを利用できるようにするゲートがこの設計から提供されています。上記の理由から、mopsの新しいプログラムはfgetsを使用することはお勧めしません。

<! - 2 - >

scanf関数は、一致するすべての使用可能な項目を返します。あなたが要求した数と同数のアイテムを得るのは必ずしもすべてではないことに注意することが重要です。項目は要求されたものより少なくてもよい。ストリームが使い果たされた場合、EOFエラーが発生します。この同じシナリオは、アイテムの一致が完了する前に読み取りが失敗した場合にも表示されます。 scanf関数は、正常に一致したアイテムの合計数を返します。その数は、要求された数よりも少ない可能性があります。

<! fgetsとscanfの間には別の相違点があります。fgetsが開いていれば、ファイルから読み込む可能性があります。 Scanfは標準入力だけを読み込み、ファイルは読み込みません。 fgetsはファイルから与えられた時間にテキストの行だけを読み込むことに注意することも重要です。一方、Scanfは一度に1行ずつテキストを読むことができますが、文字列型からの数値型へのハンドル変換も可能です。ほとんどの場合、Fgetsはデータの特定の行を読み取るために使用され、scanfはデータの解読に使用されます。

別の点として、scanfは境界チェックを実行しませんが、fgetsは評価を行うためのより良い選択肢を提供します。 Scanfは、fgetsによってチェックされた後で境界を評価するために使用できます。

もう一つ注目すべき重要な点は、scanfは、特定の入力に対してformat引数の中で定義された特定のパターンを探します。この入力をstdinと呼びます。この場合の入力は、使用されるバリアントに応じて、文字列ファイルにすることができます。一方、Fgetsは、ファイルから行を読み込み、これをバッファの出力にコピーします。一般に、scanfには、デフォルトの使用で読み取ることができる特定の文字数に制限がありません。 Fgetsには、読み取ることができる最大文字数があります。

概要

Scanfはスキャン形式を指します。

Scanfは、有効なトークンの入力に重点を置いています。

Scanfは、指定された書式に応じて入力を解析します。

FgetsはCの関数です。

Scanfは標準入力からのみ読み込みます。

Fgetsは、指定された時間にファイルから1行のテキストだけを読み込みます。

Scanfは境界チェックを実行しません。