280W =終焉の宴=

123456789101112131415161718192021222324252627282930

Profile

Project

サークル活動

::
Home > プログラミング > C@Linux ネットワークアドレスを求める

C@Linux ネットワークアドレスを求める

投稿者:Aki
投稿日時:2006-10-26 - 18:02:57
カテゴリー:プログラミング - トラックバック(No Trackbacks)
かなりgdgdになってしまった。

ビット演算を使うらしい。最後に&だけ使った。



訂正大歓迎(゚ー゚)

======bit_enzan.c======
#include <stdio.h>
#include <string.h>
#include <stdlib.h>


//オクテット毎にint配列へ分解
void ad_split(char address[],int result[])
{
  int i,j=0,k=0;
  char oc[4] = {};
  for(i=0;i<16;i++)
  {
    if(address[i] == '\0')
    {
      result[j] = atoi(oc);
      break;
    }
    if(address[i] == '.')
    {
      result[j] = atoi(oc);
      j++;
      k = 0;
      memset(oc,'\0',strlen(oc));
    }
    else
    {
      oc[k] = address[i];
      k++;
    }
  }
}

main()
{
  int i,j,k,n,tmp_ip[4] = {},tmp_sb[4] = {};
  char ip[16] = {},sb[16] = {};
  
  printf("IPアドレスを入力し、Enterを入力してください。[exp:192.168.1.100]\n");
  scanf("%s",ip);
  printf("サブネットマスクを入力し、Enterを入力してください。[exp:255.255.255.0]\n");
  scanf("%s",sb);

  printf("IPアドレス:%s,サブネットマスク:%s\n\n",ip,sb);
  
  ad_split(ip,tmp_ip);
  ad_split(sb,tmp_sb);

  printf("ネットワークアドレス:");
  for(n=0;n<4;n++)
  {
    printf("%d",tmp_ip[n] & tmp_sb[n]);
    if(n < 3) printf(".");
  }
  
  printf("\n");
}
============

Comments

No comments yet

Add Comments

Trackback

トラックバック
このエントリにトラックバックはありません
このトラックバックURLを使ってこの記事にトラックバックを送ることができます。 もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。.