私の質問は、IP 番号のすべての部分を 3 桁に変換する方法です。たとえば127.0.0.1
、127.000.000.001
Python などの言語では簡単に実行できますが、私は C が初めてで、その処理方法がわかりません。
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 のゼロを忘れました!
「先行ゼロ」を使用して整数を出力するには、次のようにします。
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.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,".");
}
このリンクはあなたに役立ちます...