gpt4 book ai didi

c - 逐字节打印结构的值

转载 作者:太空宇宙 更新时间:2023-11-04 00:57:31 25 4
gpt4 key购买 nike

基本上,我尝试将 char 数组转换为指向结构的指针,并逐字节打印出结构中的值。这是因为我正在处理的一些遗留代码使用宏来进行一些位移和屏蔽以更改结构中整数内的 4 位,并且我试图找出宏是否按预期工作。但是,我已将我的问题压缩为这个玩具示例-

#include <stdio.h>
#include <stdint.h>

int main()
{
struct student
{
int32_t hi;
int8_t test
};

struct student p1 = {20, 20};

for(int i = 0; i < sizeof(p1); i++)
{
printf("%c",((char*)&p1)[i]);
}
return 0;
}

出于某种原因,这会打印出两个字符(显示为其中包含 0014 的框),除此之外什么都没有。如果我将 for 循环从 0 更改为 5(这大致是我期望的 for 循环的范围),我会得到完全相同的输出。有没有办法做我想做的事(即打印出 5 个字符)?我知道有些字符只是空格,但我不明白我怎么没有说空格。

最佳答案

您正在尝试将二进制值打印为字符。如何打印这些字符取决于您的控制台,但字节值 0 通常不会打印任何内容。

如果您想查看字节的值是什么,请将它们打印为十六进制数字:

printf("%02x ",((char*)&p1)[i]);

关于c - 逐字节打印结构的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54282715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com