我希望我的程序要求用户输入汽车名称,汽车颜色和汽车类型。我想用结构和两个函数来做这个。第一个函数接收用户输入的信息,第二个函数只显示刚刚输入的信息。我试过编码,但我不知道如何在两个单独的函数中使用结构。以下是我到目前为止的情况:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Automobiles {
char name_of_car[50];
char color_of_car[50];
char brand_of_car[50];
} auto;
void UserInput() {
printf("What is the name of the car?\n");
scanf(" %s", auto.name_of_car);
printf("What is the color of the car?\n");
scanf(" %s", auto.color_of_car);
printf("What is the brand of the car?\n");
scanf(" %s", auto.brand_of_car);
}
void DisplayOutput() {
printf("%s", auto.name_of_car);
printf("%s", auto.color_of_car);
printf("%s", auto.brand_of_car);
}
int main() {
UserInput();
DisplayOutput();
return 0;
}
答案 0 :(得分:1)
如果您想将结构作为参数传递给函数,可以举一个例子:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Automobile {
char name_of_car[50];
char color_of_car[50];
char brand_of_car[50];
};
void UserInput(struct Automobile *auto) {
printf("What is the name of the car?\n");
scanf(" %s", auto->name_of_car);
printf("What is the color of the car?\n");
scanf(" %s", auto->color_of_car);
printf("What is the brand of the car?\n");
scanf(" %s", auto->brand_of_car);
}
void DisplayOutput(struct Automobile *auto) {
printf("%s", auto->name_of_car);
printf("%s", auto->color_of_car);
printf("%s", auto->brand_of_car);
}
int main() {
// Declare an instance of an Automobile structure.
struct Automobile auto;
// Declare and initialize a pointer to an Automobile structure.
struct Automobile *p_auto = &auto;
// Pass the pointer to the functions.
UserInput(p_auto);
DisplayOutput(p_auto);
return 0;
}
在此示例中,Automobile
结构的实例被分配为main()
函数的本地实例。然后我们声明一个指针,并初始化它,使它指向该本地实例。然后我们将指针传递给函数。
您的原始代码将Automobile
结构的实例声明为全局值,并从您的函数中访问它。可能的实施,但并不总是合适的......
如果您想了解更多信息,请阅读当地C知识提供者的“按值传递”和“按推荐传递”主题。