gpt4 book ai didi

c - 如何使用指针数组打印结构实体?

转载 作者:太空宇宙 更新时间:2023-11-04 07:50:49 25 4
gpt4 key购买 nike

我用 C 写了一个程序,它有一个名为 ak 的结构。有一个指针数组s,存放着ak类型数组p的地址。输入值后,只会打印 str

如何使用指针数组打印 strid

第 1 组:

#include<stdio.h>
typedef struct
{
char str[10];
int id;
}ak;

int main()
{
printf("Hey\n");
int i;
ak *s[5],p[5];
for(i=0;i<5;i++)
{
s[i]=&p[i];
printf("Input string:");
scanf("%s",&p[i].str);
printf("Input id:");
scanf("%d",&p[i].id);
}
i=0;
while(i<5)
{
printf("%s\n",s[i].id);
++i;
}
return 0;
}

第 2 组:

#include<stdio.h>
typedef struct
{
char str[10];
int id;
}ak;

int main()
{
printf("Hey\n");
int i;
ak *s[5],p[5];
for(i=0;i<5;i++)
{
s[i]=&p[i];
printf("Input string:");
scanf("%s",&p[i].str);
printf("Input id:");
scanf("%d",&p[i].id);
}
i=0;
while(i<5)
{
printf("%s\n",s[i]);
++i;
}
return 0;
}

所以当我尝试 set1 代码时,它给了我错误提示:

C:\CPP\c\Prototypes>gcc -o ct structure.c
structure.c: In function 'main':
structure.c:22:32: error: request for member 'id' in something not a structure or union

printf("%s\n",*s[i].id);
^

截图在这里:

https://imageshack.com/a/img921/3084/j1rHig.png

当我尝试 set2 代码时,它只打印 str 值。屏幕截图在这里:

https://imageshack.com/a/img922/614/JHSGZ9.png

最佳答案

关于 set1 和你关于 printf("%s\n",*s[i].id); 的问题.

*s[i].id相当于*(s[i].id) ,而不是(*s[i]).id正如你所想的那样。因为 s[i] 的类型是ak *你不能通过 s[i].id 得到它的字段 id .

你可以写(*s[i]).id但更具可读性的方法是使用 s[i]->id .

你的 printf 还有一个问题,格式不能是 "%s"因为s[i]->idint,不是char *


关于set2

你做 printf("%s\n",s[i]); ,你很惊讶,因为只打印了字符串,你怎么能期望打印字符串 int 呢?

你请求打印一个字符串(格式 %s )但是 s[i]不是字符串。 偶然 struct 以字段 str 开始,它是一个字符串,所以是的,你写了它,但这不是正确的方法。

您必须显式打印每个属性,例如执行 printf("%s %d\n",s[i]->str, s[i]->id);

关于c - 如何使用指针数组打印结构实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53994635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com