gpt4 book ai didi

c - 更新多个结构成员而不使用数组

转载 作者:行者123 更新时间:2023-11-30 19:03:53 25 4
gpt4 key购买 nike

我正在开发一个程序,其描述如下:

编写一个正确的 C 程序,利用函数来接受用户输入并更新结构的成员。该结构应包含三个成员:LastName、Gender 和 Age。姓氏不得超过 30 个字符。程序和功能应该足够灵活,可以容纳任意数量的结构成员。

结构实例应在主函数中创建。应为每个实例调用该函数以填充实例成员。成员的赋值应该显示在主函数中。

输入和输出应该适用于任意数量的实例。但是出于测试目的,请使其适用于两个结构实例。

不要创建任何数组。主程序和函数要精简(变量数量最少,避免临时变量)

我无法使用数组,因此我使用了以下代码选项。有没有更有效的方法来做到这一点?

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

struct member {
char lastName[30];
char gender;
int age;
};

void populateStruct(struct member person);

// begin main function
int main(void){

int i=0;
struct member person1={0};
struct member person2={0};

populateStruct(person1);
populateStruct(person2);

return 0;
} // end main


// function prototypes
void populateStruct(struct member person){

printf("\nEnter last name: ");
scanf(" %s", &person.lastName);
printf("\nEnter gender: ");
scanf(" %c", &person.gender);
printf("\nEnter age: ");
scanf(" %d", &person.age);

printf("The information you entered is:\n");
printf("\n");
printf(" %s ", person.lastName);
printf(" %c ", person.gender);
printf(" %d ", person.age);
printf("\n");

}

最佳答案

这不会按照要求状态在 main 函数中打印。然而,在执行此操作之前,您需要将指向结构的指针传递给函数。现在,您将结构的副本传递给函数,因此您在函数中所做的更改在main中不可见。

通过传递指针,调用函数可以取消引用该指针以更改main中的对象。

void populateStruct(struct member *person);

int main(void){

int i=0;
struct member person1={0};
struct member person2={0};

populateStruct(&person1);
populateStruct(&person2);

printf("The information you entered is:\n");
printf("\n");
printf(" %s ", person1.lastName);
printf(" %c ", person1.gender);
printf(" %d ", person1.age);
printf("\n");
printf("\n");
printf(" %s ", person2.lastName);
printf(" %c ", person2.gender);
printf(" %d ", person2.age);
printf("\n");


return 0;
} // end main


// function prototypes
void populateStruct(struct member *person){

printf("\nEnter last name: ");
scanf(" %29s", person->lastName);
printf("\nEnter gender: ");
scanf(" %c", &person->gender);
printf("\nEnter age: ");
scanf(" %d", &person->age);

}

关于c - 更新多个结构成员而不使用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53357016/

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