How to pad octets of IP Address with Zeros in C++
In this article, we are going to see how we can output an IP address with 3 digits for each part in C++. We can also say that we will pad octets of IP Address with Zeros in C++.
So, what is an IP address?
IP address is a label that is assigned to all the connected devices in a network. An IP address is used to host devices or for identification and location addressing.
Padding octets of IP Address with zeroes in C++
The requirement for this is due to the fact that, sometimes we need an IP address with 3 digits. But the IP address string that the computer receives might not have 3 digits for each part.
For eg: A typical IP address looks like 192.168.1.1. In this address, there are parts with a 3-bit address as well as a 1-bit address. To pad the IP with zeroes, we get the final result as: 192.168.001.001.
So, how do we reach this result? Let us write a C++ program to do so.
We define a simple function to perform the task by taking in the IP string. We also initialize some variables with 0.
#include<bits/stdc++.h>
using namespace std;
void change(char *str)
{
int a1=0,a2=0,a3=0,a4=0;
int c = 0;
int i = 0;We then use the C++ inbuilt functions- strtok(), atoi(), sprintf() to regulate our codes.
The strtok breaks the string into a series of tokens. atoi converts string into integer. And sprintf acts as a pointer to a string.
const char s[2] = ".";
char *t;
t = strtok(str, s);
a1 = atoi(t);
while( t != NULL )
{
t = strtok(NULL, s);
if(i==0)
a2 = atoi(t);
else if(i==1)
a3 = atoi(t);
else if(i==2)
a4 = atoi(t);
i++;
}
sprintf(str,"%03d.%03d.%03d.%03d",a1,a2,a3,a4);
}Finally, it’s time to declare the main function.
int main()
{
char address[]="192.168.1.1";
cout<<endl<<"IP address before padding= "<<address;
change(address);
cout<<endl<<"IP address after padding= "<<address;
cout<<endl;
return 0;
}We then get the padded IP address.
IP address before padding= 192.168.1.1 IP addressafter padding= 192.168.001.001 -------------------------------- Process exited after 2.975 seconds with return value 0 Press any key to continue . . .
This was all for the code. I hope this was of your help.
Also read: std::to_address in C++ with example
Leave a Reply