以表格格式打印ASCII

时间:2015-10-01 23:05:53

标签: c loops ascii tabular

寻找可以帮助我解决代码格式的任何提示。我需要在C中打印ASCII表,但由于C的程序性质,我无法获得正确的表格格式。

基本上这是我的代码:

#include <stdio.h> 

char header[] = "Dec Hex Oct Char |";
char header2[] = "-----------------|";

int main(){

    char i;

    printf("%s %s %s %s\n",header,header,header,header);
    printf("%s %s %s %s\n",header2,header2,header2,header2);

    for(i = 0;i<=31;i++){
        printf("%03d %02X %03o       |",i,i,i);
    }

    return 0;
}

我的输出看起来像这样:

Dec Hex Oct Char | Dec Hex Oct Char | Dec Hex Oct Char |

<000> 000 00 000

001 00 001

...

031 1F 037

现在我需要剩下的列来生成相同的东西,除了ASCII号32-127

我理解为什么它没有按照我想要的方式生成..但是当我尝试在第一个中嵌套另一个for循环(打印ASCII数字32-63)时,它不会编译好吧

基本上我在询问是否有一种方法可以运行并行for循环或使用for()内部的另一个函数,以便它可以在开始下一行之前在同一行上打印其余表。

1 个答案:

答案 0 :(得分:0)

打印ASCII时,要显示不可打印的char,请使用转义序列。

char *CodeToString(char *dest, char ch) {
   if (isprintf((unsigned char) ch) {
     dest[0] = ch;
     dest[1] = 0;
   } else {
     sprintf(dest, "\\x%02X",  (unsigned char) ch);
   }  
   return dest;
}

要打印多个列,请使用内部循环。 @Alan Au

ASCII运行0到127 @Olaf

for(i = 0; i < 32; i++){
  for (j=0; j < 128; j += 32) {  
    char dest[5];
    printf("%3d %02X %03o %4s |",i+j,i+j,i+j,CodeToString(dest, i+j));
  }
  putc('\n', stdout):
}