【发布时间】:2018-04-09 09:09:10
【问题描述】:
我需要将 IP 地址读入一个 char 数组以便稍后处理。由于 IP 八位字节可以高达 256,因此我认为使用 unsigned char 数组来读取它们会很好。这就是我打算使用它的方式。
sprintf(buf,"%d.%d.%d.%d",ip24,ip16,ip8,ip);
但似乎 sprintf 的第一个参数应该是 char* ,因此它会抛出以下警告。我该如何处理。
expected ‘char * restrict’ but argument is of type ‘unsigned char *’
【问题讨论】:
-
为什么不把buf初始化为一个char数组,大到可以处理一个ip地址呢?这样你就不需要它被取消签名:
char buf[16]="255.255.255.255" -
无关紧要的是“IP 八位字节可以高达 256”。所以呢?您将它们呈现为由
chars 组成的文本字符串。这个问题表明你对自己在做什么缺乏思考。 -
您没有向我们展示,但
buf显然是错误的类型。将其声明为char *而不是unsigned char*。根据ip和朋友的类型,您可能希望使用%u而不是%d(并且八位位组不能大到 256;有效范围是 [0,255])。