![](/img/trans.png)
[英]Using sprintf to convert an unsigned long to char array producing 0
[英]sprintf an unsigned char array
我需要將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 *’
sprintf((char*)buf,"%d.%d.%d.%d",ip24,ip16,ip8,ip);
這樣可以避免警告。 但是為什么不使用char * buf?
buf
的類型應該首先是char*
。 IP八位位組可以大至256(即,它是一個無符號char)這一事實與buf
是一個unsigned char
數組無關。
sprint
想要一個char*
作為第一個參數,所以給它一個char:
如果更改buf
的數據類型很麻煩,則需要將buf
聲明為char*
或char buf[16]
而不是unsigned char*
,或者在使用時將其強制轉換。
正如您正確指出的那樣,在sprintf()的手冊頁中進行引用時,它表示它期望使用char *str
類型的第一個參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.