我在做一个计算器,代码这里        nA=atoi(a);
nB=atoi(b);

switch(fuhao)
{
case '+':
nResult=nA+nB;
break;
case '-':
nResult=nA+nB;
break;
default:
break;
}
itoa(nResult,result,256);

SetDlgItemText(IDC_RESULT,result);
strcpy(a,"");
strcpy(b,"");但是把数字再转化成字符串的时候就变成了ANSC II码了,怎么回事??比如我输入21+1,结果确是m,21+2,结果是n
void CFunDlg::OnNum1() 
{
// TODO: Add your control notification handler code here
if(!IsDown)
{
a=1;
itoa(a,buff,256);
SetDlgItemText(IDC_RESULT,buff);
}
else
{
b=1;
itoa(b,buff,256);
SetDlgItemText(IDC_RESULT,buff);
}
}void CFunDlg::OnNum2() 
{
if(!IsDown)
{
a=2;
itoa(a,buff,256);
SetDlgItemText(IDC_RESULT,buff);
}
else
{
b=2;
itoa(b,buff,256);
SetDlgItemText(IDC_RESULT,buff);
}
IsDown=!IsDown;
}void CFunDlg::OnAdd() 
{
fuhao='+';
IsDown=!IsDown;
// TODO: Add your control notification handler code here

}
这个是以前的代码,一直搞不懂为什么当我要把按下第二个数字的时候就会出错,比如我按下1+2,按下2的时候就会出错,按下2+1,按下1的时候就会出错

解决方案 »

  1.   

    函数名称:     itoa函数原型:     char *itoa(int value, char *string, int radix)函数功能:     将整形数value转换为其等价的字符串函数返回:     指向string的指针函数说明:     value 要转化的数值,radix 转换的进制,如10表示按十进制转换看下吧
      

  2.   

    囧你得先把数字转换成字符串才行。。
    itoa,或这sprintf
      

  3.   

     
    void SetDlgItemText(
       int nID,
       LPCTSTR lpszString 
    );
     
      

  4.   

     
    void SetDlgItemText(
       int nID,
       LPCTSTR lpszString 
    );
     
      

  5.   

     
    void SetDlgItemText(
       int nID,
       LPCTSTR lpszString 
    );