簡體   English   中英

以表格格式打印 ASCII

[英]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;
}

要打印多列,請使用內部循環。 @艾倫歐

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):
}  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM