如何在C中的多个函数中使用结构?

时间:2016-04-08 22:29:55

标签: c function struct malloc

我希望我的程序要求用户输入汽车名称,汽车颜色和汽车类型。我想用结构和两个函数来做这个。第一个函数接收用户输入的信息,第二个函数只显示刚刚输入的信息。我试过编码,但我不知道如何在两个单独的函数中使用结构。以下是我到目前为止的情况:

#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;
}

1 个答案:

答案 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知识提供者的“按值传递”和“按推荐传递”主题。