我的问题是如何将IP号码的每个部分转换为三位数?例如,127.0.0.1
变为127.000.000.001
使用像Python这样的语言很容易,但我是C新手,不知道如何处理它。
答案 0 :(得分:0)
打印带有“前导零”的整数如下:
int i = 9;
printf("%03i", i); // prints 009
因此,如果您的IP存储为4个字节,您可以尝试:
char ip[4] = {...};
printf("%03i.%03i.%03i.%03i", (int)ip[0], (int)ip[1], (int)ip[2], (int)ip[3]);
答案 1 :(得分:0)
char ip1[] = "127.0.0.1";
int a1, a2, a3, a4;
sscanf(ip1, "%i.%i.%i.%i", &a1, &a2, &a3, &a4);
char ip2[16];
snprintf(ip2, sizeof(ip2), "%03i.%03i.%03i.%03i", a1, a2, a3, a4);
忘记了snprintf中的零!
答案 2 :(得分:-1)
您可以使用1. strtok和2.使用strchr或strstr对字符串进行标记,然后使用这些标记,您可以检查长度并进行必要的处理。
例如(使用strtok)可以使用strchr或strstr进行一些更改
char s[]="127.0.0.1";
char *tokens = strtok(s,".");
while(tokens != NULL)
{
if(strlen(tokens)!=3){
//insert zeros till the length is not 3
}
tokens=strtok(NULL,".");
}
this link对您有用......