找出下面几段代码的错误之处char szName[16];
memcpy(szName,"bqqadmin",16);
----------------------------
char szName[16];
strcpy(szName,"bqqadmin");
if( szName=="bqqadmin" )
{
printf("Ok");
}
-------------------------------
void SetName(LPCTSTR lpszName)
{
char szName[16];
strncpy(szName,lpszName,16);
}
---------------------------------
HRESULT Invoke(BOOL b)
{
HRESULT hr;
if( b )
{
hr = S_OK;
}
return hr;
}
memcpy(szName,"bqqadmin",16);
----------------------------
char szName[16];
strcpy(szName,"bqqadmin");
if( szName=="bqqadmin" )
{
printf("Ok");
}
-------------------------------
void SetName(LPCTSTR lpszName)
{
char szName[16];
strncpy(szName,lpszName,16);
}
---------------------------------
HRESULT Invoke(BOOL b)
{
HRESULT hr;
if( b )
{
hr = S_OK;
}
return hr;
}
strncpy(szName,lpszName,16); // 错误
if( b ) // 没有else,有错误隐患
{
hr = S_OK;
}
memcpy(szName,"bqqadmin",16);//会把bqqadmin\0后面的内存所存的东东也拷到szName里。不过不影响使用。===================================
char szName[16];
strcpy(szName,"bqqadmin");
if( szName=="bqqadmin" )//szName是一个地址,而这个地址跟字符串常量"bqqadmin"的地址是不可能相等的,所以永远不可能执行printf("ok")
{
printf("Ok");
}
{
char szName[16];
strncpy(szName,lpszName,16);
}====================
眼拙,看不出有什么非逻辑错误。
{
HRESULT hr;
if( b )
{
hr = S_OK;
}
return hr;//当b为FALSE的时候,hr没有初始化
}