2012-04-29 8 views
0

ダブルを文字列に変換してからメッセージボックスに問題があります。私が読んだことから、sprintfは(ゆるやかに、しかし特定のポイントのために最良の選択ではない)私が望む機能です。ここに私のコード例がありますが、どこが間違っているのか分かりません。ダブルでメッセージボックスを表示

DOUBLE time; 
char timearray[30]; 
time = (double)(end.QuadPart - st.QuadPart)/(double)freq.QuadPart; 
sprintf(timearray, "%lf", time); 

ここからはどこですか?私は好きなものを試しました。

MessageBox(NULL, timearray, TEXT("mb"), MB_OK); 

しかし、これはtimearrayパラメータに次のエラーを与える:タイプの エラー「* charが」タイプのパラメータ「LPCWSTR」と互換性がありません。

私はどこが間違っているかについてのアイデアはありますか?

答えて

1

あなたのプロジェクトは、デフォルトでワイド(ユニコード)文字を使用するように設定されているので、wchar_twsprintf(より良い、wnsprintf)を使用する必要があります。

double time; 
wchar_t buffer[30]; 
time = (double)(end.QuadPart - st.QuadPart)/(double)freq.QuadPart; 
_snwprintf(buffer, sizeof(buffer)/sizeof(*buffer), L"%lf", time); 
MessageBoxW(NULL, buffer, L"mb", MB_OK); 

か、あなたは TCHARの使用したい場合:私は、識別子「wnsprintf」を取得していますwnsprintfを使用すると

double time; 
TCHAR buffer[30]; 
time = (double)(end.QuadPart - st.QuadPart)/(double)freq.QuadPart; 
_sntprintf(buffer, sizeof(buffer)/sizeof(*buffer), _T("%lf"), time); 
MessageBox(NULL, buffer, _T("mb"), MB_OK); 
+0

は、未定義のエラーメッセージです。私は行方不明のものがありますか?私はこれがに含まれていると仮定しましたが、間違っている可能性があります。 –

+0

編集:あなたはただwsprintfを書くことを意味すると思います。これは最初の "sizeof(buffer)"にエラーがありますが、unsigned int型は互換性がないと言っています。 –

+0

申し訳ありません、それは '_snwprintf'です。 'wsprintf'は標準ですが、バッファ境界をチェックしないので、回避する必要があります。 –

関連する問題