将C号的每个部分转换为C中的三位数

时间:2012-10-08 07:09:14

标签: c ip digits

我的问题是如何将IP号码的每个部分转换为三位数?例如,127.0.0.1变为127.000.000.001

使用像Python这样的语言很容易,但我是C新手,不知道如何处理它。

3 个答案:

答案 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对您有用......