2017-12-19 36 views
0

サイズが1024の文字列があり、std :: fprintf()を使用して印刷したいと考えています。 私は次のことを試してみました:std :: fprintf()を使用して長い文字列を印刷するには?

FILE* m_file = .....; 
char * msg = .....; // (size of 1024) 
std::fprintf(m_file, "'%.1024s'\n", msg); 

しかし、出力ファイルに、私は誰もが手掛かりを持っていない、唯一の1000

の長さまで印刷されたMSGはそれについてのドキュメントに何かを見つけることができませんでした見ます?

更新:

それはどこかに私たちのパイプラインの中に、文字列は、サイズが1000で切断されていることが判明し、それは私が、私はMSGを参照してください「fprintfの

+2

std :: fstreamを使用してください。 –

+0

コードは最小限の_Environmental limit__254を超えました。あなた自身であります。あなたのシステムで 'BUFSIZ'とは何ですか? – chux

+0

@ manni66私はそれを使うことができましたが、これは古いコードであり、あまり変更したくありません。また、私はなぜこれが起こっているのか不思議です –

答えて

3

後に文字列全体を見ていないのです1000の長さまでしか印刷されません。 - >"%.1024s"は、文字列の長さまたは1024のいずれか小さい方の値を出力します。

明らかにm_file[1000]'\0'です。

1

代わりにofstreamを使用してください。あなたがofstream m_fileを正常に初期化したとすると、次のことが可能です:

m_file.write(msg, 1024) 
関連する問題