我需要将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 *’
答案 0 :(得分:2)
sprintf((char*)buf,"%d.%d.%d.%d",ip24,ip16,ip8,ip);
这可以避免警告。但为什么不使用char * buf?
答案 1 :(得分:2)
buf
的类型首先应为char*
。 IP八位字节可以大到256(即它是无符号字符)这一事实与buf
是unsigned char
的数组无关。
sprint
想要char*
作为第一个参数,所以给它一个char:
答案 2 :(得分:1)
如果更改buf
的数据类型,您需要将char*
声明为char buf[16]
或unsigned char*
而不是buf
,或在使用时将其投弃使用很麻烦。
正如您所说的那样,参考sprintf()的手册页,它表明它期望char *str
类型的第一个参数。