冲刺错误"variable may be unsafe" (C4996)...选择?



这是我的代码:

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable : 4996)
#pragma comment(lib,"ws2_32.lib")
#include "stdafx.h"
#include <assert.h>
#include "Bootpd.h"
#include <iostream>
#include <string>
#include <iphlpapi.h>

char *MAC() {
PIP_ADAPTER_INFO AdapterInfo;
DWORD dwBufLen = sizeof(AdapterInfo);
char *mac_addr = (char*)malloc(20);
AdapterInfo = (IP_ADAPTER_INFO *)malloc(sizeof(IP_ADAPTER_INFO));
assert(AdapterInfo != NULL); //Error allocating memory
// Make an initial call to GetAdaptersInfo to get the necessary size into the dwBufLen variable
if (GetAdaptersInfo(AdapterInfo, &dwBufLen) == ERROR_BUFFER_OVERFLOW) {
AdapterInfo = (IP_ADAPTER_INFO *)malloc(dwBufLen);
assert(AdapterInfo != NULL);
}
if (GetAdaptersInfo(AdapterInfo, &dwBufLen) == NO_ERROR) {
PIP_ADAPTER_INFO info = AdapterInfo; //Copy information
sprintf(mac_addr, "%02X:%02X:%02X:%02X:%02X:%02X",
info->Address[0], info->Address[1],
info->Address[2], info->Address[3],
info->Address[4], info->Address[5]);
}
free(AdapterInfo);
return mac_addr;
}

我在Windows 2015上使用VS 10。我正在尝试格式化网络适配器的 MAC 地址信息,使其看起来像 MAC 地址 (aa:bb:cc:dd:ee:ff(。我已经尝试定义_CRT_SECURE_NO_WARNINGS并在#include语句上方禁用警告4996但没有成功。我错过了什么吗,或者有没有人知道不同的解决方法来摆脱sprintf错误variable may be unsafe?谢谢。

编译器抱怨mac_addr数组溢出的可能性。给sprintf_s一个机会。https://en.cppreference.com/w/c/io/fprintf

最新更新