1
有沒有方法可以將* char數組的打印元素手動執行爲十六進制值,而不引入循環或通過增量影響指針?手動打印char *的單個值而不循環或遞增
它不應該添加引入額外的變量,改變當前值,並應該是一個oneliner printf/printk/...
有沒有方法可以將* char數組的打印元素手動執行爲十六進制值,而不引入循環或通過增量影響指針?手動打印char *的單個值而不循環或遞增
它不應該添加引入額外的變量,改變當前值,並應該是一個oneliner printf/printk/...
下面的代碼可用於參考。
#include<stdio.h>
main()
{
char buf[3] = {0xa, 13, 'a'};
printf("%x \n", *buf); # a
printf("%x \n", *(buf+1)); # d
printf("%x \n", *(buf+2)); # 61
printf("%x \n", *buf); # a
}
沒有循環,指針和大小實際上不變參數:
void fun(char * ptr, uint idx, uint size)
{
if(idx < size)
{
printf("% 2x\n", (unsigned char) (ptr[idx]));
fun(ptr, 1 + idx, size);
}
}
實例調用:
char ray[] = { 0xca, 0xff, 0xee, 0x00 };
fun(ray, 0, sizeof(ray)/sizeof(ray[0]));
這聽起來並不 「簡單」 的。您應該添加更多的上下文來澄清不修改指針的非常奇怪的要求。如果在編譯時未知數組長度,將很難避免循環。 – unwind
「簡單」調試打印是什麼意思? – Eregrith