printf
printf
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/07/06 14:45 UTC 版)
printf(プリントエフ)は、C言語の標準ライブラリに属し、ヘッダーファイル stdio.h
で宣言されている関数である。引数で与えられた書式付きの文字列を、環境によって設定された標準出力 (stdout
) に出力する。その機能は国際標準規格「ISO/IEC 9899:1999」(通称C99)および日本産業規格(旧称・日本工業規格)による翻訳「JIS X 3010:2003」において
と規定されている (7.19.6.3)。 printf
関数は,与えられた実引数の前にstdout
を実引数として付加したfprintf
関数と等価とする。
注釈
- ^ 実際のローカライズ作業では、gettext等によってメッセージカタログから文字列を得るようにコードを記述する。
- ^ 類似の順序指定可能な書式化機能を持つものとして、Windows APIのFormatMessage()関数や、Microsoft Foundation ClassのAfxFormatString2()関数、.NET FrameworkのSystem.String.Format()メソッドなどが挙げられる。
- ^ 可変長引数では「既定の実引数拡張」により、float型の引数はdouble型へと変換されるため、本来はdoubleに対して修飾子を適用する必要はない。
- ^ 例えばLP64環境では
long
は64ビットであり、仮にint64_t
型の実引数に対して%ld
書式を使用したとしてもほとんどの実装では期待通り動作する可能性が高いが、LLP64環境ではlong
は32ビットであり、int64_t
型の実引数に対して%ld
書式を使用すると未定義動作を引き起こす。また、long long
は少なくとも64ビット以上の値を表現できることが保証されているが、int64_t
と同じ型であるという保証はどこにもなく、int64_t
型の実引数に対して%lld
書式を使用した場合の動作はやはり未定義となる。同様に、int
とint32_t
が同じ型であるという保証もない。 - ^ Microsoft Visual C++には非標準関数としてバッファサイズを受け取らないswprintfが存在するが、バージョン2005 (8.0) 以降では既定で無効化されており、非推奨となっている[3][4]。
出典
- ^ Fixed width integer types (since C99) - cppreference.com
- ^ 固定幅の整数型 (C99以上) - cppreference.com
- ^ sprintf、swprintf (CRT) | Microsoft Docs
- ^ sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l | Microsoft Docs
- ^ wsprintfA function (winuser.h) - Win32 apps | Microsoft Learn
- ^ wnsprintfA function (shlwapi.h) - Win32 apps | Microsoft Learn
- ^ セーフ文字列関数の使用 - Windows drivers | Microsoft Learn
- ^ “第10章 著名な脆弱性対策 フォーマット文字列攻撃対策”. IPA ISEC セキュア・プログラミング講座:C/C++言語編. 独立行政法人 情報処理推進機構. 2012年7月3日閲覧。
- ^ Format Specification Syntax: `printf` and `wprintf` Functions | Microsoft Learn
- ^ “PHP: printf”. PHPマニュアル (2013年3月22日). 2013年3月28日閲覧。
- ^ “Kernel.#printf”. Ruby 1.9.3 リファレンスマニュアル. 2013年3月28日閲覧。
- ^ “Instance method String#%”. Ruby 1.9.3 リファレンスマニュアル. 2013年3月28日閲覧。
- ^ “The Boost Format Library” (2006年12月2日). 2013年3月28日閲覧。
- ^ 文字列フォーマット - boostjp
- ^ format - cpprefjp C++日本語リファレンス
- ^ print - cpprefjp C++日本語リファレンス
- 1 printfとは
- 2 printfの概要
- 3 コード例
- 4 参考文献
固有名詞の分類
- Printfのページへのリンク