在struct中打印带有printf的char指针数组



我试图用for打印数组的名称,但输出给我随机的字母和符号,我不能正确地转换它来打印结构体的名称。

typedef struct{
// uint8_t name;
char *name[100];
char *lasTName[100];
}resFrame;
resFrame serverFrame;
for(int j=0;j<10;j++){
printf("%s",(char *)&serverFrame.name[j]);  
}

输出:

�7��

我尝试了一个for和另一个指针,但它给了我同样的问题,有时一个核心转储

如果数据成员name声明为

char *name[100];

确实包含指向字符串的指针那么你需要写,例如

printf("%sn", serverFrame.name[j]);

转换说明符期望一个类型为char *的实参。

您的&serverFrame.name[j]使用的表达式类型为char **。将其强制转换为char *类型会导致未定义的行为,因为调用printf时会将指针的地址视为string对象的第一个元素的地址。