VS2010 的 MFC sprintf打印不完整的有关问题(Unicode标准)

VS2010 的 MFC sprintf打印不完整的问题(Unicode标准)
在VS2010 的 MFC环境下,sprintf(szTmp,"lzma.exe e %s %s -d16 -lc0",csPath,csTmpFile);     打印出来后,其中的csPath,csTmpFile只打印了第一个字母。什么原因呢?


char szTmp[512] = {0};
CString csPath= _T("E:\\dabaotiaoshi\\TWOPackFile\\Debug");
CString csTmpFile= _T("E:\\dabaotiaoshi\\TWOPackFile\\Debug\\C930.app");
sprintf(szTmp,"lzma.exe e %s %s -d16 -lc0",csPath,csTmpFile);
最后打印的结果lzma.exe e E E -d16 -lc0
------解决思路----------------------
%S 
------解决思路----------------------
TCHAR szTmp[512];
CString csPath= _T("E:\\dabaotiaoshi\\TWOPackFile\\Debug");
CString csTmpFile= _T("E:\\dabaotiaoshi\\TWOPackFile\\Debug\\C930.app");
_stprintf(szTmp,_T("lzma.exe e %s %s -d16 -lc0"),csPath,csTmpFile);

------解决思路----------------------
混合使用很不好

要么CString 和CString::Format
要么char[] 和 sprintf,
如果你非要混合使用,应该是sprintf(szTmp,"lzma.exe e %s %s -d16 -lc0",csPath.GetBuffer(),csTmpFile.GetBuffer());