在messagebox中显示double

时间:2012-04-29 19:06:20

标签: c messagebox printf

我遇到将double转换为字符串,然后转换为消息框的问题。从我所读到的,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 个答案:

答案 0 :(得分:1)

默认情况下,您的项目可能设置为使用宽(Unicode)字符,因此您应该使用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 s:

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);