C: 带有 NULL 字符的 memcpy()
C: memcpy() with NULL characters
我有一个可以打印文本和图像的 C++ 代码。当它们分别 运行 时,两者都工作正常。现在,我想合并打印,以便我可以将图像嵌入任何我想要的地方。
data = "TEXT [LOGO] TEXT";
假设,我有上面的数据。对于这样的数据,我想在这里做的是用收据打印的实际数据替换 [LOGO]。图像数据存储在文件中(ESC Pos Commands Plus 图像数据)。
文本文件中的示例图像数据..
1b40 1b61 011b 3308 1b2a 01f0 003f 7f7f
ffff ffff ffff ffff ffff ffff ffff ffff
ffff ffff ffff ffff ffff ffff ffff ffff
ffff ffff ffff ffff ffff fefe fcfc f8f8
f0f0 e0e1 c1c3 8707 0f0f 0000 0000 0000
我重新使用了搜索和替换功能..
from this link...
为简单起见,我们只参考一个简单的 memcpy
调用...
char *temp = (char*) calloc(dataLength,dataLength * sizeof(char*));
memcpy(temp, logoBuffer, logoSize);
现在的问题是 logoBuffer 包含很多 'NULL characters'。并且在复制过程中数据被剪切了。
有什么解决方法吗? 运行 没有想法...
根本问题是您想将二进制数据存储在文本文件中。你通常不能那样做,因为二进制数据不是文本数据1,尽管文本数据是二进制数据。您需要通过使用适当的函数或函数参数将文件设为二进制文件并相应地 read/write 。除此之外,您似乎无法理解 c or perhaps c++ languages which are different, read this link c。
例如,您的动态内存分配有误,您分配的 space 比您显然想要的多,因此不会造成任何可见的问题。但是你分配错误的大小意味着你可能很容易做一些会产生非常悲惨结果的事情,要理解我为什么这么说,请阅读未定义行为的概念。
1并非每个字节都有文本表示,因此并非每个字节序列都可以使用或视为文本。
我有一个可以打印文本和图像的 C++ 代码。当它们分别 运行 时,两者都工作正常。现在,我想合并打印,以便我可以将图像嵌入任何我想要的地方。
data = "TEXT [LOGO] TEXT";
假设,我有上面的数据。对于这样的数据,我想在这里做的是用收据打印的实际数据替换 [LOGO]。图像数据存储在文件中(ESC Pos Commands Plus 图像数据)。
文本文件中的示例图像数据..
1b40 1b61 011b 3308 1b2a 01f0 003f 7f7f
ffff ffff ffff ffff ffff ffff ffff ffff
ffff ffff ffff ffff ffff ffff ffff ffff
ffff ffff ffff ffff ffff fefe fcfc f8f8
f0f0 e0e1 c1c3 8707 0f0f 0000 0000 0000
我重新使用了搜索和替换功能.. from this link...
为简单起见,我们只参考一个简单的 memcpy
调用...
char *temp = (char*) calloc(dataLength,dataLength * sizeof(char*));
memcpy(temp, logoBuffer, logoSize);
现在的问题是 logoBuffer 包含很多 'NULL characters'。并且在复制过程中数据被剪切了。
有什么解决方法吗? 运行 没有想法...
根本问题是您想将二进制数据存储在文本文件中。你通常不能那样做,因为二进制数据不是文本数据1,尽管文本数据是二进制数据。您需要通过使用适当的函数或函数参数将文件设为二进制文件并相应地 read/write 。除此之外,您似乎无法理解 c or perhaps c++ languages which are different, read this link c。
例如,您的动态内存分配有误,您分配的 space 比您显然想要的多,因此不会造成任何可见的问题。但是你分配错误的大小意味着你可能很容易做一些会产生非常悲惨结果的事情,要理解我为什么这么说,请阅读未定义行为的概念。
1并非每个字节都有文本表示,因此并非每个字节序列都可以使用或视为文本。