gpt4 book ai didi

c - 使用函数打印结构

转载 作者:行者123 更新时间:2023-11-30 15:16:05 27 4
gpt4 key购买 nike

声明一个描述单个视频游戏的结构。视频游戏有标题、类型、平台、开发商、发行年份、年龄限制、价格和他们是否支持应用内购买。您需要为每个数据选择适当的数据类型要存储在结构中的信息。

  • 将结构命名为:Video_Game。
  • 在主函数中本地声明三个视频游戏结构体变量,分别称为game1、game2和游戏3。
  • 将上述《Candy Crush Saga》(King,2012)示例的详细信息分配给 game1 的成员。
  • 将上述 Halo 4 (343 Industries, 2014) 示例的详细信息分配给 game2 的成员。
  • 将您最喜欢的游戏的详细信息分配给 game3 的成员……如果您不玩游戏,检查您的智能手机...您肯定在上面玩过一些东西...如果没有,请检查相关的应用程序商店排行榜并找到一款可能成为您新宠的游戏!
  • 接下来,声明一个名为 print_video_game_details() 的函数,该函数接受一个参数这是一个指向之前声明的视频游戏结构的指针。在此函数中,打印出详细信息传递给函数的游戏,采用上面所示的 Candy Crush Saga 和 Halo 4 风格示例。
  • 接下来,从 main 中调用 print_video_game_details 函数 3 次,并传入成员全部设置完毕后,game1、game2、game3的地址。

到目前为止我的代码:

#include <stdio.h>
#include <string.h>

struct video_game
{
char* title;
char* genre;
char* developer;
int year;
char* platform;
int lower_age;
float price;
char* inapp_purchase;
}game1, game2;

void print_video_game_details()
{
for(int i =1; i<=3; i++)
{
printf("Title: %s", game[i].title); // game[i] is showing an error "undeclared"
printf("Genre: %s", game[i].genre);
printf("Developer: %s", game[i].developer);
printf("year of release: %d", game[i].year);
printf("platform: %s", game[i].platform);
printf("lower age: %d", game[i].lower age);
printf("price: %f", game[i].price); //is showing an error "incompatible"
printf("inapp_purchase: %s", game[i].inapp_purchase);
}
}

int main(void)
{
game1.title = "Candy crush saga";
game1.genre = "Match-Three Puzzle";
game1.developer = "King";
game1.year = "2012";
game1.platform = "Android, ios, Windows Phone";
game1.lower_age = "7";
game1.price = "$0.00";
game1.inapp_purchase = "yes";
print_video_game_details();
}

我无法打印出结构,因为它无法编译。

错误:

prog.c: In function 'print_video_game_details':
prog.c:27:33: error: 'struct video_game' has no member named 'lower'
printf("lower age: %d", game[i].lower age);
^
prog.c:27:40: error: expected ')' before 'age'
printf("lower age: %d", game[i].lower age);
^
prog.c: In function 'main':
prog.c:39:15: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
game[0].year = "2012";
^
prog.c:41:20: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
game[0].lower_age = "7";
^
prog.c:42:16: error: incompatible types when assigning to type 'float' from type 'char *'
game[0].price = "$0.00";
^

最佳答案

您的代码存在的问题:

  1. 行中:printf("lower age: %d", game[i].lower age); , lower age应该是lower_age .
  2. 您应该定义一个类似 struct video_game game[1]; 的数组如果您打算在 print_video_game_details() 中使用 for 循环
  3. For 循环限制应从 i = 0 开始去吧i < [however many games there are]
  4. 主要应定义game[0] , game[1]等等,而不是game1 , game2等等
  5. game[0].year是一个 int,所以不要输入 2012用引号引起来
  6. game[0].price是一个 float ,因此省略引号并删除美元符号。

这是我们在评论中讨论的代码。它适用于一款视频游戏。您可以增加video_game game[x] number 和 for 循环以支持多个视频游戏。

#include <stdio.h>
#include <string.h>

struct video_game
{
char* title;
char* genre;
char* developer;
int year;
char* platform;
int lower_age;
float price;
char* inapp_purchase;
}game1, game2;

struct video_game game[1];

void print_video_game_details()
{
int i;
for(i = 0; i < 1; i++)
{
printf("Title: %s\n", game[i].title);
printf("Genre: %s\n", game[i].genre);
printf("Developer: %s\n", game[i].developer);
printf("year of release: %d\n", game[i].year);
printf("platform: %s\n", game[i].platform);
printf("lower age: %d\n", game[i].lower_age);
printf("price: %f\n", game[i].price);
printf("inapp_purchase: %s\n", game[i].inapp_purchase);
}
}

int main(int argc, char* argv[])
{
game[0].title = "Candy crush saga";
game[0].genre = "Match-Three Puzzle";
game[0].developer = "King";
game[0].year = 2012;
game[0].platform = "Android, ios, Windows Phone";
game[0].lower_age = 7;
game[0].price = 0.0;
game[0].inapp_purchase = "yes";
print_video_game_details();
}

关于c - 使用函数打印结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33249599/

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