必要なのは、IP アドレスがサブネット内にあるかどうかを判断し、そのためにネットマスクを適用することです。おそらく(確かに)あなたが望むことをするためのライブラリがすでにそこにあります。これは、自分でロールしたい場合です。
この IP アドレスが信頼できるソース (つまり、ユーザーではない) からのものである場合は、次のようにして、標準の C 文字列から IP アドレスを簡単に抽出できます。
char ipAddressString[16] = "192.168.125.5"
char netMaskString[16] = "255.255.0.0"
char subnetString[16] = "192.168.0.0"
uint32_t ipAddress = parseIPV4string(ipAddressString);
uint32_t netmask = parseIPV4string(netmaskString);
uint32_t subnet = parseIPV4string(subnetString);
if (ipAddress & netmask == subnet) {
return true;
}
uint32_t parseIPV4string(char* ipAddress) {
char ipbytes[4];
sscanf(ipAddress, "%uhh.%uhh.%uhh.%uhh", &ipbytes[3], &ipbytes[2], &ipbytes[1], &ipbytes[0]);
return ipbytes[0] | ipbytes[1] << 8 | ipbytes[2] << 16 | ipbytes[3] << 24;
}