请看下面的代码段(一个实际问题的简化):
......
CListCtrol lc;
.....
int pos = lc.InsertItem(0, _T("123"));
TCHAR buffer[20];
_tprintf(buffer, "%d", 1);
lc.SetItemText(pos, 1, buffer);//.....
......
这样的话,第一行第二列显示的不是正确的字符‘1’,而是20个乱码。请教高手这是怎么回事,怎么解决。

解决方案 »

  1.   

    _tsprintf是个宏,可以选择窄/宽字符集,不时它的问题吧!
      

  2.   

    _tprintf改为sprintf
    _tprintf是切换printf/wprintf
    P.S.没有_tsprintf宏
      

  3.   

    我打错了,是_tprintf.我用的就是他的切换功能阿,改成了sprintf或者wprintf一样不行。问题好像不是在这里。
      

  4.   

    TCHAR buffer[20];
    ZeroMemory(buffer, 20);
    _tprintf(buffer, "%d", 1);
      

  5.   

    ......
    CListCtrol lc;
    .....
    int pos = lc.InsertItem(0, _T("123"));
    CString buffer;    //如果用TCHAR buffer[20]; _tprintf(buffer, "%d", 1);则腰保证有效字符之后有个“\0”
    buffer.Format("%d",1);
    lc.SetItemText(pos, 1, buffer);//.....
    ......