带有空白C++的移印行

pad print line with white space C++

本文关键字:C++ 空白      更新时间:2023-10-16

C++我使用无符号字符指针来保存字节数组,以便我可以在每个元素中容纳 8 位颜色代码作为打印行。

有一个保存数据的数组,一个保存空格的数组,我使用 for 循环来填充第三个数组,以便数据在开头,空格在末尾。

创建指针时,当我在运行时监视内存时,所有元素的默认值均为 0xCD ,即颜色图表上的洋红色。我使用 for 循环来填充我想要的字节0x00,但它不会覆盖第三个数组的默认数组值。

所以,我被我的打印机打印洋红色而不是空白。然而,我可以用数据很好地覆盖该数组。但不是空格。我不确定这是什么原因。谁能给我任何见解?这是我的代码...

PrintLine(unsigned char* pbData, unsigned long ulDataSize, UINT xoffset)
{ 
   if (xoffset > 0) 
   {  //create pointer to byte array for xoffset 
      unsigned char* offsetData; 
      offsetData = new unsigned char[(xoffset / 8)]; //x offset is divided by 8 
      //to convert pixels to bytes
      //create pointer to byte array to hold image data and offset data
      unsigned char* finalData;
      finalData = new unsigned char[ulDataSize + (xoffset / 8)];
      //begin final data with image data passed into the function
     for (int count = 0; count < ulDataSize; count++)
     {
         finalData[count] = pbData[count];
     }
     //populate offset data with blank bytes
     for (int count = 0; count < (xoffset / 8); count++)
     {
         offsetData[count] = 0x00;
     }
     //add blank data for offset to finalData
     int position = 0;
     for (int count = ulDataSize; count < ulDataSize + (xoffset / 8);count++)
     {
         finalData[ulDataSize] = offsetData[position];//also tried =0x00
         position++;
     }
     //Send data to printer.
     if (!(Write(finalData, ulDataSize + (xoffset / 8)))
     {       
         return FALSE;
     }
    return TRUE;
  }
}

乍一看,您的代码没有错误,但我看到一些看起来可疑的东西。我说的是这条线:

finalData[ulDataSize] = offsetData[position]; //also tried =0x00

我想你想要的是:

finalData[count] = offsetData[position];//also tried =0x00

另一方面,你可以像这样编写循环:

for (int count = 0; count < (xoffset / 8); count++)
{
    finalData[ulDataSize + count] = offsetData[count];
}

使代码更具可读性。