如何使用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感谢您的澄清。我会编辑我的评论。 –