我正在尝试更改数组中的数据,这是我的代码的一部分:
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]
最佳答案
您的代码对于C99和更高版本是正确的。大概您使用的C标准库不支持C99中引入的hh
length修饰符;可能是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];
}