为什么输出的不是A而是4153f8,想不通,帮我看看,在线等,谢谢
代码如下:
void CCRCTESTDlg::OnButtonComputer()
{
// TODO: Add your control notification handler code here
UpdateData(true);
CString str;
int length;
LPCTSTR buf;
char buffer[200];
// m_cInput.GetWindowText(str);
// buf=str;
char*d ="10";
sprintf(buffer,"%x",d);
MessageBox(buffer);
UpdateData(false);
}
问题点数:0、回复次数:6Top
1 楼forover(天下无吥散dě宴席)回复于 2005-06-02 10:01:43 得分 0
char*d ="10";
sprintf(buffer,"%x",d);
改为
int d = 10;
sprintf(buffer,"%x",d);Top
2 楼forover(天下无吥散dě宴席)回复于 2005-06-02 10:03:04 得分 0
你原来输出的是d的地址Top
3 楼idAnts(此广告位招租)回复于 2005-06-02 10:05:53 得分 0
那个d是指针。
实际上打出的是字符传地址。
sprintf(buffer,"%s",d);
Top
4 楼qrlvls( 空 气 )回复于 2005-06-02 10:43:38 得分 0
up,d是一个指针,即输出"10"字符串在内存空间中的地址
如果 %X 要求的是一个数值,不会将字符串 10 转换成数值的
如果将字符串转换成16进制要两个步骤
1.将字符串转换成数值型
int nVal = atoi(d);
2.将数值转换成字符串
char szHex[_MAX_PATH];
itoa(nVal, szHex, 10);Top
5 楼uoyevoli(爱什么呢?www.FARPROC.com)回复于 2005-06-02 10:53:50 得分 0
呵呵,都说过了。Top
6 楼younggle(洋溢)回复于 2005-06-02 11:17:45 得分 0
d是一个指针,即输出"10"字符串在内存空间中的地址
如果 %X 要求的是一个数值,不会将字符串 10 转换成数值的
如果将字符串转换成16进制要两个步骤
1.将字符串转换成数值型
int nVal = atoi(d);
2.将数值转换成字符串
char szHex[_MAX_PATH];
itoa(nVal, szHex, 10);
=============================================================
就是这样。Top




