c - 手动打印 char * 的单个值而不循环或递增

标签 c

有没有办法在不引入循环或通过递增影响指针的情况下手动将 *char 数组的元素打印为十六进制值?

它不应该添加引入额外的变量,改变当前变量并且应该是一个单行代码printf/printk/...

最佳答案

没有循环,指针和大小实际上是常量参数:

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] ) );

关于c - 手动打印 char * 的单个值而不循环或递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29818800/

相关文章:

c - 在 for 循环比较中使用二进制数

c++ - 通过函数指针调用函数 - 是否取消引用指针?有什么不同?

c - 如何将 2 个数组合并为一个数组

c - 为什么内存没有正确分配给 C 中的 char*?

c - C中关于 'floating point exception'的简单问题

c - time.h clock() 在 OS X 上坏了吗?

c - 如何在c中对常见数据成员/变量进行分组?

c - 将名称/值对写入 JSON 对象

c - 指向非线程本地数据的线程本地指针

c - 用 struct 覆盖 char 数组