Arrays 如何在结构中打印无符号字符数组的内容?
我有一个包含无符号字符数组的结构,我不知道如何在下面的上下文中打印结构中的数组内容 字符数组以null结尾Arrays 如何在结构中打印无符号字符数组的内容?,arrays,c,pointers,struct,Arrays,C,Pointers,Struct,我有一个包含无符号字符数组的结构,我不知道如何在下面的上下文中打印结构中的数组内容 字符数组以null结尾 typedef data_type { int a; unsigned char b; unsigned char c[33]; } DATA_TYPE, *DATA; 我创建了结构的一个实例 DATA data; data = (DATA) malloc(sizeof(DATA_TYPE); /* some code where I populate its values
typedef data_type
{
int a;
unsigned char b;
unsigned char c[33];
} DATA_TYPE, *DATA;
我创建了结构的一个实例
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");
如果它是以
NUL
('\0'
)结尾的字符串,您可以使用注释中建议的内容(printf(“数据->c=%s”,数据->c);
)。如果不是,则可以使用循环打印整个阵列。例如:
printf("data->c = ");
for(i = 0; i < sizeof(data->c); i++)
printf("%u ", data->c[i]);
printf("\n");
printf(“数据->c=”);
对于(i=0;ic);i++)
printf(“%u”,数据->c[i]);
printf(“\n”);
是否c
包含以NUL结尾的c字符串?如果是,请使用%s
否则,您需要编写自己的显示函数,以某种方式迭代c
数组
就我个人而言,我会重用十几个void hextdump(const void*buf,const size\u t size)
或我在过去二十年中编写的类似函数的实现之一
一些C标准库还允许将您自己的格式字符挂接到*printf
函数中,但这可能不是很好的移植性。除了好的答案:
如果data->c
缺少空字符,则可以精确地将所有数组打印为文本。它将输出限制为(int)sizeof data->c
,即数组的大小
printf("%.*s\n", (int) sizeof data->c, data->c);
在
data->c
中使用空字符时,上面的行为类似于“%s”
,即printf(“数据->c=%s”,数据->c)代码>printf(“数据->c=%s”,数据->c)
请说明如何填充数组。它是以null结尾的字符串吗?