簡體   English   中英

sprintf一個無符號字符數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM