输入“10”输出1.0从字符串到浮点版本2

时间:2011-11-28 17:20:59

标签: winapi

作为亲爱的罗伯特哈维的后续行动,罗伯特哈维声称它没有发生。

正如主题几乎所说的那样,我得到了一个编辑控件,我用“0.00”预定义了,我启动了我的应用程序并在EDIT控件中输入了一个示例10,在EDIT控件旁边我得到了一个BUTTON控件我将此代码作为事件。 然后,下面的代码将从EDIT控件中获取“string”或char数组,将其转换为标准C库中带有“atof”的浮点数,然后我将其写回EDIT控件,但这次我没有得到10.0如预期的那样,我只得到1。

我尝试使用“123”然后我只得到12.0,所以简单形式的问题就是为什么我输入的字符串“10”会变成1.00,代码如下,我在哪里可以正确使用。我认为你不需要进一步的代码,因为你们都可能有一个工作的骨架并将它过去或者可以通过你的头部运行代码而无需原型。

char fromTextField[1024];
HWND textfield = GetDlgItem(hwnd,(WM_USER+1001));
int fromTextFieldLength = GetWindowTextLength(textfield);
GetWindowText(textfield,fromTextField,fromTextFieldLength);
float ampl =atof(fromTextField);
char amplitudefromtextfield[100];
_snprintf(amplitudefromtextfield,sizeof(amplitudefromtextfield),"%f",ampl);
SetWindowText(textfield,amplitudefromtextfield);

1 个答案:

答案 0 :(得分:1)

我怀疑您的问题是您传递给GetWindowText的长度参数是GetWindowTextLength的结果。因此,如果GetWindowTextLength返回3,则您将3传递给GetWindowText。但这不包括空终止符。所以GetWindowText不会终止字符串。并且无法确定缓冲区中可能存在的内容。

将您的电话改为:

GetWindowText(textField, fromTextField, fromTextFieldLength+1);