再次需要一些帮助。用户正在docreate()函数中输入一些值,我需要在main函数中返回这些值来打印它们。我已经尝试但无法实现目标。当用户在主代码中输入2时,我只是无人机(名称)的一个特征,用于打印。代码如下:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
struct drone_t{
char name[30];
float top_s;
float acc;
};
struct do_create(int dronesCreated);
#define MAXDRONES 3
int main()
{
struct drone_t drone;
int dronesCreated = 0;
int i;
char namee;
while(1)
{
printf("1. Create Drone\n2. Calculate Time\n3. Exit\n");
scanf("%d", &i);
if (i == 1)
{
if(dronesCreated<=MAXDRONES-1)
{
dronesCreated++;
do_create(dronesCreated);
}
else
{
printf("error: cannot create more drones\n");
}
}
else if (i == 2)
{
printf("%s", drone[dronesCreated].name);
}
else if (i == 3)
{
exit(EXIT_SUCCESS);
}
else
{
printf("error: select an option between 1 and 3\n");
}
}
}
void do_create(int dronesCreated)
{
struct drone_t drone[dronesCreated];
printf("What is the name of the drone?\n");
scanf("%s", drone[dronesCreated].name);
printf("What is the top speed of the drone? (kmph)\n");
scanf("%f", &drone[dronesCreated].top_s);
printf("What is the acceleration of the drone? (mpsps)\n");
scanf("%f", &drone[dronesCreated].acc);
return drone.name;
}
答案 0 :(得分:0)
您的代码错误很少,修复它们可能会为您提供所需的结果:
struct do_create(int dronesCreated);
是无效声明,应为void do_create(int dronesCreated);
struct drone_t drone[MAXDRONES];
char namee;
从未使用,应该删除或应该使用dronesCreated
索引初始化为0并在第一个if语句中递增1,因此它将从1而不是0开始。因此,您要么初始化它-1,当在if语句中增加1时,它将从索引0开始,或者你必须在调用do_create后增加它do_create
被声明为void,但您尝试返回一些值(在您的情况下为char *),因此您可以将其更改为返回struct drone_t
do_create
内你重新定义了在main中定义的struct drone_t drone[dronesCreated]
,请注意drone
中的do_create
变量将是clsoest范围中定义的drone
,这是局部变量,修改它不会影响main中定义的变量。因此,要么必须将其定义为全局变量,要将其作为参数传递给do_create
,要么使do_create
将新struct drone_t
返回到main,而将主要归入drone
以将其分配给{ {1}}数组。