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]);

例如,当我的输入88.88.88.88.88.88设置paket[0] - paket[5]为 88 时,它也会更改paket[6], paket[7]paket[8]0。

请问这怎么可能以及如何解决?我只需要改变[0] - [5]

4

2 回答 2

4

您的代码对于 C99 及更高版本是正确的。大概您使用的是不支持hh长度修饰符的 C 标准库,该修饰符是在 C99 中引入的;可能是 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 回答