#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类型的变量。 该函数提示用户输入已定义变量的所有必需属性 (等级,力量,速度,防御,情报,运气,最大HP,当前HP和名称)。 然后,此函数使用输入填充已定义的变量并返回结构。
void printData(struct Player p1,struct Item itemList [],int listSize): 此函数采用struct Player p1类型的变量,这是struct Item itemList []的数组, 和一个整数listSize,表示itemList中的项目数。 此函数显示p1的所有信息以及itemList项目列表的所有信息。 *** /
在这个程序中,我创建了两个结构类型,播放器和项目。然后我初始化一个玩家和两个项目。我遇到的问题是将信息传递给printData函数并尝试将其打印到屏幕时,值不是我保存到每个对象的值。请随意编译此代码并建议和更改,非常感谢任何帮助。
答案 0 :(得分:1)
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)
也就是说,您的第一个参数是结构对象,而不是指向结构对象的指针。