以表格格式打印ASCII
寻找任何可以帮助我的代码格式的提示。我需要用C打印ASCII表,但由于C的过程性,我无法获得正确的表格式 基本上这是我的代码:以表格格式打印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)
#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):
}