1、char* chname="";
2、CString csname;
3、_asm{
       mov eax,itempCounter
add eax,0x16c
         mov eax,[eax]
       add eax,0x54
       mov eax,[eax]
mov eax,[eax]
mov chname,eax
}
4、 csname.Format("%s",chname);//换成%s总崩溃,何解?
以上4步后崩溃!!!!%s换成%x、%d都没事!cstringformat%s

解决方案 »

  1.   

    确定
    mov chname,eaxchname 是 一个 串 (带 0)
      

  2.   

    mov chname,eax
    eax实际上应该是个数值型,不是字符串,虽然你定义的chname是字符型,你单步执行看看eax的值就知道了.
      

  3.   

    我觉得同样的逻辑用指针运算就可以了?为什么要嵌入汇编呢?
    [eax]这个地方到底是否有数据呢?你给出的程序看不出来。毕竟你的chname指向的是常量区的空字符串。
    你是不是应该换成一个字符数组呢?
      

  4.   

    Csting csname(chname);或
    CString csname = chname;
      

  5.   

    mov chname,eax
    这一步没问题吗?chname指向一个常量地址,你却试图修改他的内容,这会崩溃的