You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MFC C++程序读取编辑框IDC_EDIT1输入转char数组问题求解

问题原因与解决方案

错误原因

你写的前三行代码逻辑完全错误:sprintf_s(input, "%d", IDC_EDIT1)的作用是把编辑框控件ID的整型数值格式化为数字字符串存入input数组,完全没有读取编辑框内的用户输入内容,这就是你读取异常的核心原因。
你后续写入计算结果到编辑框的SetDlgItemText逻辑是正确的,无需调整。

正确实现方案

你需要先调用MFC原生的GetDlgItemText接口获取编辑框内的输入内容,再将获取到的CString类型内容转为char数组即可,参考代码如下:

char input[50] = {0}; // 初始化char数组避免残留脏数据
CString strInput;
// 读取编辑框IDC_EDIT1的内容到strInput
GetDlgItemText(IDC_EDIT1, strInput);
// 将CString转为char数组,适配MFC默认Unicode字符集环境
size_t len = wcstombs(input, strInput, _countof(input) - 1);

// 可选:添加输入长度校验避免溢出
if (len >= _countof(input) - 1) {
    // 可自行添加逻辑提示用户输入过长
}

如果你的项目使用的是多字节字符集,也可以直接用如下更简单的写法:

char input[50] = {0};
GetDlgItemTextA(IDC_EDIT1, input, _countof(input) - 1);
size_t len = strlen(input);

内容的提问来源于stack exchange,提问作者Bela

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 03:36:00