web-dev-qa-db-ja.com

C標準ライブラリ関数名で「f」は何を表しますか?

fは、C標準ライブラリ関数の名前で何を表していますか?多くの関数の名前にfが含まれていることに気づきましたが、これは私にはあまり意味がありません。

例:fgetsfopenprintfscanfsqrtfなど。

18
Erik W

あなたの質問は一般的にあまりにも一般的ですが、私はいくつかの例を説明することができます。

  • fgetsfopenfclose 、…—「f」は「ファイル」を表します。これらの関数は、POSIX関数のようにファイル番号ではなく、FILE *ポインターを受け入れるか返します。
  • printfscanf 、…—「f」は「フォーマット済み」を表します。これらの関数はフォーマット文字列を受け入れます。
  • fprintffscanf —これは上記の2つの組み合わせです。
  • sinfcosf 、…—「f」はfloatを表します(doubleの選択肢と区別するため)。これは、1.5fのように、浮動小数点リテラルの末尾にfを付けると非常にうまく適合することに注意してください。
  • 最後に、Deduplicator 指摘 として、 freefloor または setbuf (“ set buffer 」)ここで、「f」は単に自然言語の文字として表示されます。

引数のタイプを示す単一文字で名前の前または接尾辞を付けるという伝統は、オーバーロードのおかげでC++では廃止されたCでは必要です。実際、C++でのオーバーロードは、コンパイラが name mangling と呼ばれるプロセスによって、生成されたシンボルに内部でこれらのサフィックスを自動的に追加することによって機能します。

51
5gon12eder

先頭のfは、関数が動作するタイプを示します。

  • fgetsgetsだけでなく、FILE *ハンドルでstdinを使用します
  • fopen:ファイルを開き、それをFILE *として返します(元のopenが行うファイル記述子の代わりに)

末尾のfは、フォーマット文字列を使用することを意味します。

  • printf:フォーマット指定子に従って出力します
  • scanf:形式に従って読み込みます

組み合わせると、次のようなものが得られます。

  • fprintf:フォーマット指定子に従って特定のFILE *に出力します

math.h関数のようなものを考えるとき、末尾のfは、特定の関数が次のようにタイプfloatのオペランドで動作することを示します。

  • powffloatsの指数を取ります
  • powllong doublesの指数を取ります
8
randomusername

fgetsfopenの場合、fはファイルを表すという印象を受けます。

printfscanfの場合、fはフォーマット済みを表すと思います。これは、少なくとも部分的に scanfに関するウィキペディアの記事 によってサポートされています。

4
kjschiroo

stdioライブラリの関数では、ffreadfprintfなどの前のfwriteは 'ファイルを表します。 '。 fprintfなどの関数の最後にあるscanfは、「フォーマット」を表します。したがって、printfはFORMATTED印刷です。つまり、%d%sのようなものを使用できます。

数学関数では、fの接尾辞は通常floatを意味します。

1
Gophyr