如何使用C字符串來包含多個空字符\ x00。使用c字符串發送多個空字符。 ASCII Armoring
3
A
回答
2
所有你需要做的是一樣的東西
char* data = (char*)malloc(8) ; // allocate space for 8 bytes
memset(data, 0, 8) ; // set all 8 bytes to 0's
3
C字符串是隻能由空字符終止字符數組。但是,如果你把它當作一個陣列,它可以包含內空字符:
char data[4] = { 'x', '\0', 'y', '\0' };
你必須要小心,但是,由於大部分的標準庫函數將無法正常工作,因爲他們預計結束的C字符串與第一個空字符。
例如,strlen(data)
將在上面的示例中返回1,因爲它在第一個空字符後停止。
9
C的字符串函數(例如strlen()
,printf()
等)假定緩衝區將以空終止。如果您的緩衝區具有多個0x00字符,則不能使用將0x00視爲空字符的任何函數。
因此,您不會使用例如strcpy()
(或strncpy()
),而是使用memcpy()
- 將內存的字節從一個位置移動到另一個位置,而不是依賴此以null結尾的行爲。
相關問題
- 1. 用串口發送非ASCII字符的字符串c#
- 2. 使用HTTP發送ASCII字符串Post
- 3. 使用HTTP發送ASCII字符串Post
- 4. 使用C中包含多個空字符的字符串
- 5. 使用AutoHotKey發送擴展ASCII字符
- 6. C++字符的ASCII值到字符串
- 7. ASCII空字符
- 8. Webclient.UploadString()發送一個空字符串
- 9. C#字符串ASCII表示
- 10. 從字符串發送字符到字節數組C#
- 11. Sendkeys發送no或多個字符串
- 12. 爲什麼這個ASCII字符輸出爲空字符串(VB.NET)?
- 13. 10000個ASCII字符串
- 14. 反轉包含ASCII字符和非ASCII字符的字符串
- 15. 獲得一個字符的ASCII值在C#字符串
- 16. 讀字符串ASCII
- 17. 拆分字符串多個字符無空格C#
- 18. C++空字符串
- 19. c#空字符串?
- 20. 發現使用多個字符串str_extract_all
- 21. 如何爲多個參數檢查空字符串或空字符串? - C#
- 22. Html.fromHtml Gmail發送的.sendMail(字符串,字符串,字符串,字符串)內
- 23. 空作爲字符串發送「null」
- 24. ZeroMQ Pub發送空字符串
- 25. 如何使用目標c中的ASCII值發送字符串到服務器
- 26. 使用C++進行串行通信時,發送'int'而不是ASCII字符
- 27. Telnet按字符發送字符串
- 28. C中的字符串和ASCII字符串有區別嗎?
- 29. 發送字符串串行
- 30. Php發送65 ASCII字符插座
Ehm的確,C字符串只是一個字符數組,但是它在C中專門定義了一個字符串以'\ 0'字符結尾。所以在技術上,終止字符之後的任何內容都不是C字符串的一部分。另一方面,如果將數組視爲數組,則是的,您可以將任何您喜歡的字符大小的元素粘貼到數組中。你不能再將它用作字符串了。 –
@MatsPetersson感謝您的澄清。我會編輯我的評論。 –