gpt4 book ai didi

c - 结构体的输出传递给函数

转载 作者:行者123 更新时间:2023-11-30 20:24:04 33 4
gpt4 key购买 nike

#include <stdio.h>
struct Item
{
int type;
int power;
char name[20];
};

struct Player
{
int level;
int str;
int speed;
int def;
int intel;
int luck;
int hp;
char name[20];

};
struct Item loadItem();
struct Player loadPlayer();
struct Item loadItem();

int main()
{
struct Player player1 = loadPlayer();
struct Item itemList[2];
itemList[1]=loadItem();
itemList[2]=loadItem();

printData(&player1,itemList,2);

//player1 = loadPlayer();

}

struct Item loadItem()

{
struct Item item;

printf("Please Enter the following item info:\n");
printf("Name: ");
scanf("%s",&item.name);
printf("Type: ");
scanf("%d",&item.type);
printf("Power: ");
scanf("%d",&item.power);
printf("\n");

return item;

}

struct Player loadPlayer()

{
struct Player player;
printf("Please enter the following player info:\nName: ");
scanf("%[^\n]",&player.name);
printf("Level: ");
scanf("%d",&player.level);
printf("Strength: ");
scanf("%d",&player.str);
printf("Speed: ");
scanf("%d",&player.speed);
printf("Defense: ");
scanf("%d",&player.def);
printf("Intelligence: ");
scanf("%d",&player.intel);
printf("Luck: ");
scanf("%d",&player.luck);
printf("Max HP: ");
scanf("%d",&player.hp);
printf("\n");

return player;
}

void printData(struct Player player1, struct Item itemList[], int listsize)

{
int i = 0;

printf("Collected Input: \n");
printf("Name\t Lvl Str Spd Def Int Lck MHP\n");
printf("%s\t %d %d %d %d %d %d %d",player1.name,player1.level,player1.str,player1.speed,player1.def,player1.intel,player1.luck,player1.hp);

printf("\n\n");

printf("Name\t Type Power");
for(i=0;i++;i<listsize)
printf("%s\t %d %d",itemList[i].name,itemList[i].type,itemList[i].power);

return;}

/*** struct Item loadItem():该函数定义一个 Item 类型的变量。功能,提示用户输入一个项目 名称、元素类型和元素威力, 将值存储在 Item 类型的变量中并返回它。

struct Player loadPlayer():该函数定义了一个Player类型的变量。该函数提示用户输入已定义变量的所有必需属性(等级、力量、速度、防御、智力、运气、最大生命值、当前生命值和名称)。然后,该函数用输入填充定义的变量并返回结构。

void printData(struct Player p1, struct Item itemList[], int listSize): 该函数接受一个 struct Player p1 类型的变量,一个 struct Item itemList[] 的数组, 和一个整数 listSize ,表示 itemList 中的项目数。 此函数显示 p1 的所有信息以及项目列表 itemList 的所有信息。***/

在这个程序中,我创建了两种结构类型:玩家和项目。然后我初始化一名玩家和两个元素。我遇到的问题是,当将信息传递给 printData 函数并尝试将其打印到屏幕上时,这些值不是我保存到每个对象的值。请随意自己编译此代码并提出建议和更改,非常感谢任何帮助。

最佳答案

struct Item itemList[2];
itemList[1]=loadItem();
itemList[2]=loadItem();

必须

itemList[0]=loadItem();
itemList[1]=loadItem();

C 中的数组是 0 源的。

此外:

struct Player player1 = loadPlayer();
/* ... */
printData(&player1,itemList,2);

您将指向 printData 中的结构对象的指针作为其第一个参数传递,但您的函数声明是:

void printData(struct Player player1, struct Item itemList[], int listsize)

也就是说,您的第一个参数是一个结构对象,而不是指向结构对象的指针。

关于c - 结构体的输出传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34342699/

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