C語言列印hexdump的最好實踐

2022-01-23 18:06:55 字數 1173 閱讀 8539

好久沒有更新部落格了,今天更新下。

在開發除錯debug中經常需要檢視原始二進位制資訊,特別是當不能直接列印字串時,檢視原始二進位制就特別有用了。以下的簡單函式可以列印出像hexdump命令一樣格式的資訊。除錯開發中特別方便和直觀。原始碼**於ecos。

1 typedef unsigned char

cyg_uint8 ;

2 typedef unsigned int

cyg_addrword;

3 typedef int __printf_fun(const

char *fmt, ...);

4void

5 diag_vdump_buf_with_offset(__printf_fun *pf,

6 cyg_uint8 *p,

7cyg_addrword s,

8 cyg_uint8 *base)9

14while ((int)s > 0

) else

20for (i = 0; i < 16; i++) else

26if (i == 7) (*pf)("");

27}28 (*pf)("|"

);29

for (i = 0; i < 16; i++) else

36 (*pf)("%c"

, c);37}

38 (*pf)("

|\n"

);39 s -= 16

;40 p += 16;41

}42}43

44void

45 diag_dump_buf_with_offset(cyg_uint8 *p,

46cyg_addrword s,

47 cyg_uint8 *base)48

5152

void

53 diag_dump_buf(void *p, cyg_addrword s)

54

使用時直接呼叫:diag_dump_buf(buf,len);即可。注意小心長度不要越界。

結果示例:

1092 最好吃的月餅(C語言)

月餅是久負盛名的中國傳統糕點之一,自唐朝以來,已經發展出幾百品種。若想評比出一種 最好吃 的月餅,那勢必在吃貨界引發一場腥風血雨 在這裡我們用數字說話,給出全國各地各種月餅的銷量,要求你從中找出銷量冠軍,認定為最好吃的月餅。輸入首先給出兩個正整數 n 1000 和 m 100 分別為月餅的種類數 於...

C語言列印檔案

include includevoid main int printfile char filename int fputc int c,file fp c 要寫入的字元,雖然定義為整形,但只能使用最低位的乙個位元組。fp是檔案指標 函式功能 將字元c輸出到fp所指向的檔案 int fgetc fi...

C語言 列印沙漏

7 25 列印沙漏 20 分 本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個 要求按下列格式列印 所謂 沙漏形狀 是指每行輸出奇數個符號 各行符號中心對齊 相鄰兩行符號數差2 符號數先從大到小順序遞減到1,再從小到大順序遞增 首尾符號數相等。給定任意n個符號,不一定能正好組成乙個沙漏...