寻找可以帮助我解决代码格式的任何提示。我需要在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 000001 00 001
...
031 1F 037
现在我需要剩下的列来生成相同的东西,除了ASCII号32-127
我理解为什么它没有按照我想要的方式生成..但是当我尝试在第一个中嵌套另一个for循环(打印ASCII数字32-63)时,它不会编译好吧
基本上我在询问是否有一种方法可以运行并行for循环或使用for()内部的另一个函数,以便它可以在开始下一行之前在同一行上打印其余表。
答案 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
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):
}