帮我个忙,把这段个代码中的sprintf给设法去了。

weill 2006-03-04 10:00:39
String IPGetMac(String IPStr)
{
HRESULT hr;
IPAddr ipAddr;
ULONG pulMac[2];
ULONG ulLen;

size_t i, j;
char * szMac = new char[18];
PBYTE pbHexMac = (PBYTE) pulMac;
String ReStr;

ulLen = 6;
ipAddr = inet_addr(IPStr.c_str());
memset (pulMac, 0xff, sizeof (pulMac));
SendARP (ipAddr, 0, pulMac, &ulLen);
if(ulLen > 0){
for (i = 0, j = 0; i < ulLen - 1; ++i) {
j += sprintf (szMac + j, "%02X:", pbHexMac[i]);
};
sprintf (szMac + j, "%02X", pbHexMac[i]);
ReStr = szMac;
}else{
ReStr = "Can't get.";
};
free(szMac);
return ReStr;
}
/*************************************************************
请帮我把里面的sprintf函数给去了,用字串相加或别的,可以用其它比较通用的函数,反正不要用sprintf。
**************************************************************/
...全文
61 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2006-03-05
  • 打赏
  • 举报
回复
String IPGetMac(String IPStr)
{
HRESULT hr;
IPAddr ipAddr;
ULONG pulMac[2];
ULONG ulLen;

String strMac;
PBYTE pbHexMac = (PBYTE) pulMac;
ulLen = 6;
ipAddr = inet_addr(IPStr.c_str());
memset (pulMac, 0xff, sizeof (pulMac));
SendARP (ipAddr, 0, pulMac, &ulLen);
if(ulLen > 0)
{
UINT i;
for(i = 0; i < ulLen - 1; i++)
strMac += (IntToHex(pbHexMac[i], 2) + ":");
strMac += IntToHex(pbHexMac[i], 2);
}
else
{
strMac = "Can't get.";
}
return strMac;
}
Behard 2006-03-05
  • 打赏
  • 举报
回复
直接改为使用 wsprintf 即可
wsprintf 是多线程安全的

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧