0

私はいくつかのビットマップフォントに取り組んでいます。ここでの考え方は、2つのファイル(input.txtとfont.txt)が与えられるということです。input.txtから文字列を読み取り、font.txtの内容を使用して変換してから、対応する出力をoutput.txtという別のファイルに出力する必要があります。font.txtの各文字は、16x8のグリッドで表されます。

以下のように、単純な[rogramを実装して、単一のCharAを使用してビットマップに変換します。誰かが私がコードを減らすのを手伝ってくれませんか。
ありがとうございました。

int main()
{
    unsigned int arr[]=
                       {
                        0x00,0x00,0x10,0x38,
                        0x6c,0xc6,0xc6,0xfe,
                        0xc6,0xc6,0xc6,0xc6,
                        0x00,0x00,0x00,0x00
                        };

  int i,k,j;
  int bin[8];
  int c=7;
  for(i=0;i<16;++i)
  {

        bin[0]=arr[i]>>7;
        bin[1]=(arr[i]>>6)&1;
        bin[2]=(arr[i]>>5)&1;
        bin[3]=(arr[i]>>4)&1;
        bin[4]=(arr[i]>>3)&1;
        bin[5]=(arr[i]>>2)&1;
        bin[6]=(arr[i]>>1)&1;
        bin[7]=arr[i]&1;
      k=0;  
      for(j=0;j<4;j++){
      if(bin[k]==0 && bin[k+1]==0)
          {
            printf("..");
          }
          else if(bin[k]==0 && bin[k+1]==0)
          {
            printf(".C");
          }
          else if(bin[k]==0 && bin[k+1]==0)
          {
            printf("C.");

          }
          else
          {
            printf("AA");
      }
k=k+2;      
      }
   printf("\n");

  }
}

出力:

........
........  
..AA....  
..AAAA..  
AAAAAA..  
AA..AAAA  
AA..AAAA  
AAAAAAAA  
AA..AAAA  
AA..AAAA  
AA..AAAA  
AA..AAAA  
........  
........  
........  
........
4

2 に答える 2

1

これにより、同じ出力が生成されますが、「。C」と「C」のロジックは無視しています。あなたのコードもそうするので。;-)

#include <stdio.h>
int main() {
    unsigned int arr[]=
                       {
                        0x00,0x00,0x10,0x38,
                        0x6c,0xc6,0xc6,0xfe,
                        0xc6,0xc6,0xc6,0xc6,
                        0x00,0x00,0x00,0x00
                        };

  int i,j;
  for(i=0;i<16;++i) {
    unsigned char letter = arr[i];
    for(j =0; j < 7; j++) {
        const char *str = "..";
        if(letter & 0x80) str = "AA";
        fputs(str,stdout);
        letter <<= 1;
    }
    putchar('\n');
  }
}
于 2012-09-13T18:49:23.480 に答える
0

このようなもの

 int main()
    {
        unsigned int arr[]=
                           {
                            0x00,0x00,0x10,0x38,
                            0x6c,0xc6,0xc6,0xfe,
                            0xc6,0xc6,0xc6,0xc6,
                            0x00,0x00,0x00,0x00
                            };

      int i,k,j;
      int bin[8];
      for(i=0;i<16;++i)
      {
          for(j=0;j<8;j++)
          {
            bin[j]=arr[j]>>(7-i2);
          }
          for(k=0;k<8;k+=2){
              if(bin[k]==0 && bin[k+1]==0)
              {
                printf("..");
                continue;
              }
              printf("AA");   
          }
         printf("\n");
      }
    }

printf( "。C")とprintf( "C。")は呼び出されなかったため、削除しました

于 2012-09-13T18:52:06.207 に答える