5
A
答えて
8
はい。 7.21.6.5 snprintfの関数から
、N1570(C11ドラフト):
snprintfの関数は出力 は(引数Sによって特異的ED)アレイに書き込まれることを除いて、関数fprintfと等価です ストリームではなく、 nが0の場合、何も書き込まれず、sはNULL ポインタです。それ以外の場合、n-1stを超える出力文字は配列に書き込まれるのではなく、 が破棄され、実際に 配列に書き込まれた文字の末尾にNULL文字 が書き込まれます。オーバーラップするオブジェクト間でコピーが行われる場合、 の動作は未定義です。
それはあなたが最初に必要な長さを発見して、メモリの正確な量を割り当てることができたため、未知のデータの長さを見つけるための有用な方法です。典型的な使用例は次のとおりです。
char *p;
int len = snprintf(0, 0, "%s %s some_long_string_here_", str1, str2);
p = malloc(len + 1);
snprintf(p, len + 1, "%s %s some_long_string_here", str1, str2);
2
snprintf(3)によれば、POSIX &によってC99によって標準化されています。そのmanページにも書かれています:
Concerning the return value of snprintf(), SUSv2 and C99 contradict each other: when snprintf() is called with size=0 then SUSv2 stipulates an unspecified return value less than 1, while C99 allows str to be NULL in this case, and gives the return value (as always) as the number of characters that would have been written in case the output string has been large enough. POSIX.1-2001 and later align their specification of snprintf() with C99.
のでint i=snprintf(NULL, 0, "
いくつかの形式の文字列",
.... );
i
に失敗した場合は負の数、または上の非負の出力サイズを置く必要があります成功。
(私は正確に出力サイズは非常に珍しい大きいほどよりINT_MAX
であれば何が起こるか分からない。私はそれが失敗する場合があることだろうと推測する)
関連する問題
- 1. 自動HTML標準化?
- 2. 標準化されたデバイス座標からビュースペースへのマッピング
- 3. iOSアプリケーションで標準化されたHTMLを解析する
- 4. Pythonは標準化された言語ではありませんか?
- 5. シバン(#!)は標準化されていますか?
- 6. OpenGLバイナリプログラム形式は標準化されていますか?
- 7. SPSSのマージンで標準化された残差
- 8. 逆標準化
- 9. 再標準化されたカラーバーを使用したCartopyのpcolormesh
- 10. ESRI TileLayerが標準ではない0ズームがリーフレットにロードされない
- 11. Python標準ライブラリ(バージョン2.5など)では、パラメータ化されたMS-SQLクエリを実行できますか?
- 12. Java8に標準化された汎用の機能インタフェースはありますか?
- 13. UNIXのコマンドラインパラメータの標準化されたドキュメントはどこにありますか?
- 14. 標準のMahoutリコメンダを自動化
- 15. スパース行列RDDの値の標準化
- 16. Tensorflowバッチ標準化
- 17. 標準ライブラリコンテナの一般化された関数テンプレート
- 18. 標準化された電子メールの正規表現
- 19. 最新の標準化されたJavaを学ぶところ
- 20. POSTマルチパート/フォームデータのコード化されたデータへのPython標準ライブラリ
- 21. 標準化された米国の配列と国の配列
- 22. 標準化されたpythonバイナリの場所?
- 23. 標準のパッケージでは標準のインポートでは "fmt"、インポートサイクルは許可されていませんが、コードビルドエラーです。
- 24. mallocを呼び出すsnprintf、またはmallocを呼び出さないsnprintf
- 25. '\ 0'に初期化された文字ポインタを標準出力に送信していますか? (C++)
- 26. 標準テキストファイルはNULLで終了しますか?
- 27. ColdFusionで提出されたフォームで電話番号を標準化する
- 28. onActivityResultが実行されたときresultCodeが0でデータがnull
- 29. SQLクエリはSQL Server 2008標準で実行されますが、企業では実行されません。
- 30. エンタープライズデベロッパーアカウントまたは標準デベロッパーアカウントですか?
良いですが、正確に引用していますか? –
[C11ドラフト](http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1570.pdf)、セクション7.21.6.5。 – nouney