BOOL GetResult(LPTSTR lpszResult,TCHAR *szError)
{
    CString str = _T("这是结果内容");
    TCHAR szErr[512] = {0};
    sprintf_s(szErr,sizeof(szErr),_T("%s"),_T("这是错误信息"))
    //...我如何把结果和错误信息回传给lpszResult和szError返回
    return TRUE;
}

解决方案 »

  1.   


    BOOL GetResult(LPTSTR lpszResult,TCHAR *szError)
    {
        ASSERT(lpszResult);
        ASSERT(szError);
        CString str = _T("这是结果内容");
        TCHAR szErr[512] = {0};
        sprintf_s(szErr,sizeof(szErr),_T("%s"),_T("这是错误信息"))
        //...我如何把结果和错误信息回传给lpszResult和szError返回    strcpy(lpszResult,str);
        wcscpy(szError,szErr);
        return TRUE;
    }
      

  2.   

    不行啊,运行到这一步strcpy(lpszResult,str);会出现一个ASSERT(FALSE) ErrMsg:L"Buffer is too small!"
      

  3.   


    BOOL GetResult(LPTSTR & lpszResult,TCHAR & szError)
    {
        CString str = _T("这是结果内容");
        TCHAR szErr[512] = {0};
        sprintf_s(szErr,sizeof(szErr),_T("%s"),_T("这是错误信息"))    return TRUE;
    }
    这样行吧
      

  4.   


    lpszResult = new TCHAR[str.GetLength() + 1];
    lstrcpy( lpszResult, str );szError = new TCHAR[str.GetLength() + 1]; 
    lstrcpy(szError, str ); delete lpszResult;
    delete szError;
      

  5.   

    LPTSTR lpszResult
    要由调用方分配内存,只传个指针是不行的如
    TCHAR result[512];
    TCHAR error[512];GetResult(result,error);
      

  6.   


    bool GetResult(LPTSTR lpszResult,TCHAR *szError)
    {
        CString str = _T("这是结果内容");
        TCHAR szErr[512] = {0};
        sprintf_s(szErr,sizeof(szErr),_T("%s"),_T("这是错误信息"));
        szError = szErr;
        sprintf_s(lpszResult,sizeof(lpszResult),_T("%s"),str.GetBuffer());
        return true;
    }
    int _tmain(int argc, _TCHAR* argv[])
    {
    TCHAR szResult[512] = {0};
    TCHAR szError[512] = {0};
    GetResult(szResult,szError);
    cout<<szResult<<endl<<szError<<endl;
    return 0;
    }这样也不行,sprintf_s这里会出现一个断言错误
      

  7.   


    bool GetResult(LPTSTR lpszResult,TCHAR *szError)
    {
        CString str = _T("这是结果内容");
        //sprintf_s(szError,sizeof(szError),_T("%s"),_T("这是错误信息"));
    //sprintf_s(lpszResult,sizeof(lpszResult),_T("%s"),str.GetBuffer()); memcpy_s(szError,sizeof(szError),_T("这是错误信息"),strlen(_T("这是错误信息"))+1);
    memcpy_s(lpszResult,sizeof(lpszResult),str.GetBuffer(),str.GetLength()+1);
        return true;
    }ASSERT(FALSE)
    memcpy_s error!
    Express:sizeInBytes > count
      

  8.   

    你需要保持前后字符使用一致性:请使用
    _stprintf_s
      

  9.   

    后面使用_tcscpy(lpszResult,str);
           _tcscpy(szError,szErr);