6

配列内のデータを変更しようとしていますが、これは私のコードの一部です:

u_char paket[100];
//here i put some data into array and then trying to change it by user
scanf("%hhx.%hhx.%hhx.%hhx.%hhx.%hhx", &paket[0], &paket[1], &paket[2], &paket[3], &paket[4], &paket[5]);

たとえば、私の入力が8888.88.88.88.88.88に設定paket[0] - paket[5]されている場合、それも変化paket[6], paket[7]paket[8]て0になります。

それはどのように可能で、どのように修正することができますか? 変えればいいだけ[0] - [5]

4

2 に答える 2

4

あなたのコードは C99 以降で正しいです。hhおそらく、C99 で導入された長さ修飾子をサポートしていない C 標準ライブラリを使用しています。おそらく Microsoft C 標準ライブラリです。

この古い C 標準ライブラリをサポートする必要がある場合は、コードを C89 互換になるように書き直す必要があります。たとえば、次のようになります。

unsigned p[6];

if (scanf("%x.%x.%x.%x.%x.%x", &p[0], &p[1], &p[2], &p[3], &p[4], &p[5]) == 6)
{
    int i;
    for (i = 0; i < 6; i++)
        paket[i] = p[i];
}
于 2013-04-22T07:49:05.997 に答える
0

あなたのコードは大丈夫です

u_char paket[100];
scanf("%hhx.%hhx.%hhx.%hhx.%hhx.%hhx", &paket[0], &paket[1], &paket[2], &paket[3], &paket[4], &paket[5])

の値を変更しませんpaket[6], paket[7] and paket[8]

于 2013-04-22T07:48:26.987 に答える