代码如下所示。最后MyString的值为什么不是 "aaabbb "而是 "aaa ",即StringCbCat返回值为S_OK,但是MyString的值没有变?
#include strsafe.h
....
char MyString[128];
HRESULT Res;
int i = sizeof(MyString);
Res=StringCbCopy((STRSAFE_LPWSTR) MyString, sizeof(MyString), (STRSAFE_LPWSTR) "aaa ");
if (Res != S_OK)
{
printf( "StringCbCopy Failed: %s\n ", MyString);
return;
}
Res=StringCbCat((STRSAFE_LPWSTR) MyString,sizeof(MyString), (STRSAFE_LPWSTR) "bbb ");
if (Res != S_OK)
{
printf( "StringCbCat Failed: %s\n ", MyString);
return;
}
printf( "%s\n ", MyString);
------解决方案--------------------------------------------------------
TCHAR MyString[128];
HRESULT Res;
int i = sizeof(MyString);
Res=StringCbCopy( MyString, sizeof(MyString), _T( "aaa ") );
if (Res != S_OK)
{
printf( "StringCbCopy Failed: %s\n ", MyString);
return 1;
}
Res=StringCbCat( MyString,sizeof(MyString), _T( "bbb ") );
if (Res != S_OK)
{
printf( "StringCbCat Failed: %s\n ", MyString);
return 1;
}
printf( "%s\n ", MyString);
return 0;
------解决方案--------------------------------------------------------
MyString定义成STRSAFE_LPWSTR MyString;
然后
Res=StringCbCopy(MyString, sizeof(MyString), (STRSAFE_LPWSTR) "aaa ");
if (Res != S_OK)
{
printf( "StringCbCopy Failed: %s\n ", MyString);
return;
}
Res=StringCbCat(MyString,sizeof(MyString), (STRSAFE_LPWSTR) "bbb ");
if (Res != S_OK)
{
printf( "StringCbCat Failed: %s\n ", MyString);
return;
}
printf( "%s\n ", MyString);