大家帮我看一下,图片是程序调试运行的截图,_szPlateWidth格式定义为char[5],在图片中运行时可以看到它的值为1580,但是右边显示的却不是4位,158010030.....
我用AfxGetMainWnd()->SetDlgItemText(IDC_PLATE_SETWIDTH,_PortInternal._szPlateWidth);界面显示的也不是1580四位,跟右图片中右边的一样1580100030
这个是什么原因呢?怎么让它正确显示,先谢谢了!

解决方案 »

  1.   

    什么意思?要初始化吗?我是用strncpy(_PortInternal._szPlateWidth,Param->commcsData->szBuffer._szPlateWidth,4);获取这个_szPlateWidth的
      

  2.   

    字符数组赋值后,其不一定可以作为字符串来使用:
    (1)对于char型数组,给其赋值后,若没有字符串结尾符“\0”,则其内容就不能作为字符串来使用,因为字符串是以结尾符“\0”结尾的;
    (2)我们在定义字符数组之后,一般要用memset对其初始化的,全部赋0(对应结尾符“\0”),比如:char buf[256];
    memset(buf, 0, 256);
    这样能保证buf的内容被处理后可以以结尾符结尾,就可以作为字符串来操作。另外一个好处是,我们调试查看buf数组的内容的时候就不会出现“烫烫烫”的乱码。
      

  3.   

    你说的这个我用了的,这里_szPlateWidth是我定义的结构体里面的一个变量,我在给它赋值前,先初始化结构体了memset(&_PortInternal, 0, sizeof(_PortInternal));但结果像我问题中所述
      

  4.   

    #include <StrSafe.h>
    TCHAR szBuf[5] ={0};
    TCHAR szText[] = _T("Hello, World!!!");
    StringCchCopy(szBuf, _countof(szBuf), szText);
    AfxMessageBox(szBuf);
      

  5.   

    谢谢 VisualEleven,这个可以用