![](/img/trans.png)
[英]Printing escaped characters directly and their relationship with the ASCII table
[英]Printing ASCII in table format
尋找任何可以幫助我了解代碼格式的提示。 我需要用 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;
}
我的輸出看起來像這樣:
十六進制十進制字符 | 十六進制十進制字符 | 十六進制十進制字符 |
000 00 000
001 00 001
...
031 一樓 037
現在我需要其余的列來生成相同的東西,除了 ASCII 數字 32-127
我明白為什么它沒有按照我想要的方式生成……但是當我嘗試在第一個 for 循環中嵌套另一個 for 循環(打印 ASCII 數字 32-63)時,它不能很好地編譯。
本質上,我是在問是否有一種方法可以並行運行 for 循環或在 for() 中使用另一個函數,以便它可以在開始下一行之前在同一行上打印表格的其余部分。
打印 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;
}
要打印多列,請使用內部循環。 @艾倫歐
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):
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.