返回char*的问题
以下函数,如何在主函数中获取getMac的返回值并打印出来?
char *getMac()
{
static char mac[255]={0};
PIP_ADAPTER_INFO pIpAdapterInfo=new IP_ADAPTER_INFO();
unsigned long stSize=sizeof(IP_ADAPTER_INFO);
int nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);
if(ERROR_BUFFER_OVERFLOW==nRel)
{
delete pIpAdapterInfo;
pIpAdapterInfo=(PIP_ADAPTER_INFO)new BYTE[stSize];
nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);
}
if (ERROR_SUCCESS==nRel)
{
//输出网卡信息
while (pIpAdapterInfo)
{
sprintf(mac,"%s%02X-%02X-%02X-%02X-%02X-%02X",mac,
pIpAdapterInfo->Address[0],
pIpAdapterInfo->Address[1],
pIpAdapterInfo->Address[2],
pIpAdapterInfo->Address[3],
pIpAdapterInfo->Address[4],
pIpAdapterInfo->Address[5]);
pIpAdapterInfo = pIpAdapterInfo->Next;
//cout<<mac<<endl;
//return mac
//Sleep(10000);
break;
}
}
//释放内存空间
if (pIpAdapterInfo)
{
delete pIpAdapterInfo;
}
return mac;
}
int _tmain(int argc, _TCHAR* argv[])
{
//主函数如何获取getMac的返回值
return 0;
}
[解决办法]
既然函数getMac中使用了静态局部变量mac,直接把该函数的返回值赋给char*类型的变量就行了。
- C/C++ code
int _tmain(int argc, _TCHAR* argv[]){ const char *pMac = getMac(); // 最好不要修改返回值,在此将pMac定义为const char*类型 cout << pMac << endl; // 输出 return 0;}
[解决办法]