以表格格式打印ASCII

以表格格式打印ASCII,c,loops,ascii,tabular,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)

寻找任何可以帮助我的代码格式的提示。我需要用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;
}
我的输出如下所示:

十二进制Oct字符|十二进制Oct字符|十二进制Oct字符|

000 000 000

001 00 001

031 1F 037

现在我需要其余的列生成相同的内容,除了ASCII数字32-127

我理解为什么它不能以我想要的方式生成..但是当我试图在第一个for循环中嵌套另一个for循环以打印ASCII数字32-63时,它编译得不太好


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

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

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;
}
要打印多列,请使用内部循环

运行时间为0到127


一种方法是在当前printf行的下方再添加两行printf:printf%03d%02X%03o |,i+32,i+32,i+32;printf%03d%02X%03o |,i+64,i+64,i+64;。当然,还有其他方法可以做到这一点。事实上,您甚至可以将其全部放入一个printf中。我把它留给你做练习。哈哈!我无法获得正确的表格格式,因为C的过程性质是图灵完整的!它编译得不太好。如果您需要这方面的帮助,那么请显示部分代码和确切的编译器错误,不要在第一关就放弃!。不要因为缺乏编程知识而责怪C。@user3629249:ASCII最近被扩展了吗?上次我检查它是一个7位代码。。。
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):
}