2015-03-02 49 views
-1

我不使用C太多,所以這是困擾我。如何從unsigned char數組寫入數據,該數組有NULL?

我有一些數據(較大結構的一部分,類型爲unsigned char[255]),我需要發送TCP/IP上。我無法控制的格式,我得到的數據

數據的小樣本:

[0] 114 'r' unsigned char 
    [1] 44 ',' unsigned char 
    [2] 0 '\0' unsigned char 
    [3] 68 'D' unsigned char 
    [4] 85 'U' unsigned char 
    [5] 255 'ÿ' unsigned char 
    [6] 128 '€' unsigned char 
    [7] 128 '€' unsigned char 

的數據是由'|'分割其他的一些信息前綴,所以我嘗試寫的所有將信息發送到緩衝區,也可以使用第三方軟件發送未簽名的信息。

什麼問題似乎是數據具有'\0',它出現與任何方式將其寫入緩衝區弄亂。

我已經嘗試迭代數組,獲取每個字符並嘗試將strcat字符緩衝區,它只適用於非'\0'字符。

我已經嘗試過strcat整個數組,當它到達'\0'

因此,任何幫助或在正確的方向一推,將不勝感激這也將停止對。

+3

使用'memcpy_s'或'memmove_s'而不是'strcpy','strcat'和朋友。 – jww 2015-03-02 13:02:07

回答

6

strcat和相關的是字符串函數。你有一個不代表字符串的字符數組,所以你不應該使用這個函數族。

使用plain read/write調用網絡I/O。您指定要傳輸的數據的起點和長度,並且數據將按原樣發送,全部爲空。

使用memcpy/memmove複製事物 - 同樣的事情,他們不看內容,只是盲目複製數據。

+0

實際上,它們是C風格的字符串函數。 – edmz 2015-03-02 13:58:03

相關問題