在 c 中使用 printf 在结构中打印字符指针数组

问题描述 投票:0回答:1

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

typedef struct{
   // uint8_t name;
    char *name[100];
    char *lasTName[100];
}resFrame;

for(int j=0;j<10;j++){
   printf("%s",(char *)&serverFrame.name[j]);  
}

输出:

�7��

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

arrays c pointers printf c-strings
1个回答
1
投票

如果数据成员

name
声明为

char *name[100];

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

printf("%s\n", serverFrame.name[j]);

转换说明符需要一个

char *
.

类型的参数

你使用的表达式

&serverFrame.name[j]
的类型是
char **
。将其转换为类型
char *
会导致未定义的行为,因为指针的地址被
printf
的调用视为字符串第一个元素的地址。

© www.soinside.com 2019 - 2024. All rights reserved.