-1

私の質問は、IP 番号のすべての部分を 3 桁に変換する方法です。たとえば127.0.0.1127.000.000.001

Python などの言語では簡単に実行できますが、私は C が初めてで、その処理方法がわかりません。

4

3 に答える 3

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 のゼロを忘れました!

于 2012-10-08T07:20:01.537 に答える
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]);
于 2012-10-08T07:13:20.630 に答える
-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,".");
}

このリンクはあなたに役立ちます...

于 2012-10-08T07:22:07.543 に答える