3

ユーザーから入力IPアドレスを取得するCでプログラムを作成したいのですが、それに対していくつかのビット操作を実行したいと考えています。Cでビット単位の入力を取得するにはどうすればよいですか。以下のコードを試しましたが、整数のサイズは2バイトであるため、完全なアドレスは8バイト(64ビット)になります。char を使用して入力をスキャンすると、入力された値が失われます。入力をビット単位で受け取る方法はありますか (32 ビットの IPv4 アドレスは 32 ビットのみ、128 ビットの V6 は 128 ビットのみ)。

    unsigned short int a,b,c,d;
scanf("%d.%d.%d.%d", &a,&b,&c,&d);
printf("%d\t%d\t%d\t%d\t", a, b, c, d);

前もって感謝します。

4

2 に答える 2

3
#include <stdio.h>

int main(void)
{
      unsigned char a,b,c,d;
      scanf("%hhu.%hhu.%hhu.%hhu", &a,&b,&c,&d);
      printf("%hhu\t%hhu\t%hhu\t%hhu\t", a, b, c, d);
      return 0;
}

与える

$ gcc t.c && ./a.out <<< 12.12.12.12
12  12  12  12

たとえば、このリファレンスを参照して、ターゲット変数の型に応じて使用する指定子を見つけてください (ドキュメントの 3 番目の表)。

于 2013-10-24T06:26:19.860 に答える