我有一个包含无符号字符数组的结构体,我不知道如何在下面的上下文中打印结构体中数组的内容。
字符数组以空值终止。
typedef data_type
{
int a;
unsigned char b;
unsigned char c[33];
} DATA_TYPE, *DATA;
我创建了一个struct的示例
DATA data;
data = (DATA) malloc(sizeof(DATA_TYPE);
/* some code where I populate its values... */
printf("data->a = %d", data->a);
printf("data->b = %u", data->b);
printf("data->c = NOT SURE HOW TO PRINT THIS PART");
3条答案
按热度按时间yvfmudvl1#
除了@小打小闹好回答:
如果
data->c
缺少 *null字符 *,则可以使用 precision 将所有数组打印为文本。它将输出限制为(int) sizeof data->c
,即数组的大小。请注意,precision是一个int
参数,而sizeof
返回size_t
,因此会出现下面的转换。如果
data->c[]
中有一个 *null字符 *,则上述代码的作用类似于"%s\n"
。ruarlubt2#
如果它是一个以
NUL
('\0'
)结尾的字符串,你可以使用注解(printf("data->c = %s", data->c);
)中的建议。如果不是,你可以使用循环来打印整个数组。例如:ugmeyewa3#
c
是否包含以NUL结尾的C字符串?如果是,请使用%s
。否则,您需要编写自己的显示函数,以某种方式迭代
c
数组。就我个人而言,我会重用我在过去20年中编写的
void hexdump(const void *buf, const size_t size)
或类似函数的十几个实现中的一个。一些C标准库还允许将您自己的格式字符挂接到
*printf
函数中,但这可能不是很容易移植。