关于网上的读取网卡MAC地址的那段程式

hyccai 2011-12-12 02:34:58
int GetMACAddress()
{
CString strResult=( _T("") );
CString strTemp=( _T("") );

HRESULT hr;
IPAddr ipAddr;
ULONG pulMac[ 2 ];
ULONG ulLen;

char *strInputIP="192.168.0.100 ";
//m_InputIP.GetWindowText( strInputIP );
ipAddr = inet_addr( strInputIP );
memset( pulMac,0xff,sizeof( pulMac ) );
ulLen = 6;

hr = SendARP( ipAddr,0,pulMac,&ulLen );
if( hr == NO_ERROR )
{
strResult.Format( _T("Return %08x,length %8d\r\n"),hr,ulLen );

size_t i, j;
char* szMac = new char[ ulLen * 3 ];
PBYTE pbHexMac = ( PBYTE )pulMac;

//
// Convert the binary MAC address into human-readable
//
for( i = 0,j = 0; i < ulLen - 1; ++i )
{
j += sprintf( szMac+j,"%02X:",pbHexMac[ i ] );
}

sprintf(szMac+j,"%02X",pbHexMac[i]);
strTemp.Format(_T("MAC address %s\r\n"),szMac);
strResult += strTemp;
delete [] szMac;
}
else
{
strResult.Format(_T("Call to SendARP failed.\r\n") );
}
//AfxMessageBox(strResult);
//m_Result.SetWindowText( strResult );
return 0;
}
1.编译时提示:
'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable

deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> D:\Program Files\Microsoft Visual Studio 9.0\VC\include\stdio.h(366) : 参见“sprintf”的声明
1>.(161) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s

instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> D:\Program Files\Microsoft Visual Studio 9.0\VC\include\stdio.h(366) : 参见“sprintf”的声明
2.把sprintf 改为sprintf_sj时提示:“int sprintf_s(char *,size_t,const char *,...)”: 不能将参数 2 从“const char [6]”转换为“size_t”
1> 没有使该转换得以执行的上下文
1>.(161) : error C2664: “int sprintf_s(char *,size_t,const char *,...)”: 不能将参数 2 从“const char [5]

”转换为“size_t”

3.怎样把二进制的MAC地址转换成00-1A-8C-9C-60-38的格式
...全文
80 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyccai 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ouyh12345 的回复:]
引用 1 楼 ouyh12345 的回复:

sprintf( szMac+j, some_len, "%02X:",pbHexMac[ i ] );


sprintf_s( szMac+j, some_len, "%02X:",pbHexMac[ i ] );
[/Quote]


不好意思,在这个程式里面some_len应该是多少
hyccai 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ouyh12345 的回复:]
引用 1 楼 ouyh12345 的回复:

sprintf( szMac+j, some_len, "%02X:",pbHexMac[ i ] );


sprintf_s( szMac+j, some_len, "%02X:",pbHexMac[ i ] );
[/Quote]


不好意思,在这个程式里面some_len应该是多少
hyccai 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ouyh12345 的回复:]
引用 1 楼 ouyh12345 的回复:

sprintf( szMac+j, some_len, "%02X:",pbHexMac[ i ] );


sprintf_s( szMac+j, some_len, "%02X:",pbHexMac[ i ] );
[/Quote]

改了就有这样的提示

2.把sprintf 改为sprintf_sj时提示:“int sprintf_s(char *,size_t,const char *,...)”: 不能将参数 2 从“const char [6]”转换为“size_t”
1> 没有使该转换得以执行的上下文
1>.(161) : error C2664: “int sprintf_s(char *,size_t,const char *,...)”: 不能将参数 2 从“const char [5]

”转换为“size_t”

ouyh12345 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ouyh12345 的回复:]

sprintf( szMac+j, some_len, "%02X:",pbHexMac[ i ] );
[/Quote]

sprintf_s( szMac+j, some_len, "%02X:",pbHexMac[ i ] );
ouyh12345 2011-12-12
  • 打赏
  • 举报
回复
sprintf( szMac+j, some_len, "%02X:",pbHexMac[ i ] );

64,666

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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