有効なIPv4アドレスを指定し、このIPアドレスの無効化されたバージョンを返します。いわゆるIPアドレスの無効化は、実際には各「。」を「[。]」に置き換えています。
例1:
入力:アドレス= "1.1.1.1"
出力: "1 [。] 1 [。] 1 [。] 1"
例2:
入力:アドレス= "255.100.50.0"
出力: "255 [。] 100 [。] 50 [。] 0"
アルゴリズム1:文字列をトラバースし、「。」に置き換えます。
char* defangIPaddr(char* address)
{
char* tmp = (char*)malloc(sizeof(char) * 25);//记得主函数中free
int i = 0, j = 0;
while (address[i] != '\0')
{
if (address[i] == '.')
{
tmp[j] = '[';
tmp[j + 1] = '.';
tmp[j + 2] = ']';
j = j + 3;
}
else
{
tmp[j] = address[i];
j++;
}
i++;
}
tmp[j] = '\0';
return tmp;
}
アルゴリズム2:ライブラリ関数を使用し、sscanfを使用して各整数を取得してから、sprintfを使用して必要な文字列をフォーマットします
char * defangIPaddr(char * address)
{
int a, b, c, d;
char *str = (char *)malloc((strlen(address) + 7) * sizeof(char)); //记得主函数中free
sscanf(address, "%d.%d.%d.%d", &a, &b, &c, &d);//获取每个数字
sprintf(str, "%d[.]%d[.]%d[.]%d" , a, b, c, d);//格式化成需要的字符串
return str;
}