【问题标题】:How can i print a pointer that takes a void function?如何打印带有 void 函数的指针?
【发布时间】:2018-11-30 08:28:12
【问题描述】:

我有一个 main.c 代码(无法更改):

int main() {
  uint8_t *param ;
  param = func(key) ; 
}

Key 是一个包含 16 个元素的数组,func 在 stud.c 中声明,该 stud.c 由 stud.h 链接到 main。 func() 声明如下

void *func(void *key){//some code}

现在我如何打印参数?我用 printf 尝试了多个选项。有什么建议吗?我还需要将参数作为十六进制格式的 16 个元素的数组。我无法更改 main.c 中的任何内容(我无法更改任何类型!!!)

for(int j = 0; j < 16; j++) {
    printf("%02X ", param[j]);
}
printf("\n");

【问题讨论】:

标签: c pointers printf void


【解决方案1】:
for(int i = 0; i < 16; ++i) {
    printf("%02" PRIu8 "\n", param[i]);
}

因为您的数组是uint8_t 类型。

别忘了#include &lt;inttypes.h&gt;

Good introduction to <inttypes.h> 中阅读更多内容,其中解释了其他命名约定,例如PRIx8 如果要打印十六进制值。

【讨论】:

  • 代码中的其他位置@CeasarDll。我想我回答了你的问题。如果我是你,我会接受这个答案(因为它是正确的),并尝试使用调试器调试我的程序(例如gdb)。然后,如果我仍然需要帮助,我会创建一个MCVE,并发布一个问题。
猜你喜欢
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 2018-08-25
  • 2021-05-09
  • 1970-01-01
  • 2014-09-05
  • 1970-01-01
相关资源
最近更新 更多