Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在结构中打印无符号字符数组的内容?_Arrays_C_Pointers_Struct - Fatal编程技术网

Arrays 如何在结构中打印无符号字符数组的内容?

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

我有一个包含无符号字符数组的结构,我不知道如何在下面的上下文中打印结构中的数组内容

字符数组以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... */

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结尾的字符串吗?