2011-10-19 7 views
4

_vscprintfはAndroidではご利用いただけません。またvsprintf(NULL, fmt, ap)は動作しません(segフォルトが生成される)ので、vsnprintfが成功するために必要なバッファのサイズを計算する方法がないようです。Androidで_vscprintfと同等ですか?

アンドロイドsources

どのようにこのシナリオを処理します... __android_log_print機能だけでvsnprintfを使用して1024に、文字列を切り捨てることを示していますか?

+3

"vsprintf(NULL、fmt、ap)は機能しません(segフォルトが生成されます)":間違って使用していないと確信していますか? – Mat

答えて

12

セクション[7.19.6.13] - C99標準のvsprintf関数は、出力バッファがNULLであると述べていません。

おそらくvsnprintfを使用したい:

int len = vsnprintf(NULL, 0, fmt, ap) 

呼び出しが成功した場合、戻り値は、バッファが十分な大きさであればNULターミネータを除く、書かれていたであろう文字の数です。これは_vscprintfのようなもので、カウントにNULターミネータも含まれていません。

+1

私はSOの投稿(http://stackoverflow.com/questions/4785381/replacement-for-ms-vscprintf-on-macos-linux)からその提案を得ましたので、私はドキュメントを読んでも試しました.. – miha

+0

これをお寄せいただき、ありがとうございました。私はvsnprintfのドキュメントの一部を見落としました。私は実際に結果の文字列を生成するために使用しています。 – miha

関連する問題