【发布时间】:2019-09-17 13:34:54
【问题描述】:
我很难在下面的代码中实现新员工介绍逻辑。通过确定新数量并根据它重新定位向量,第一个新员工会提前或迟到或程序正在终止。
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char * name;
char * email;
int age;
}Employee;
int main () {
int i, option, employeeInitialQuantity, newEmployeeQuantity;
printf ("How many employees would you like to register?");
scanf ("%d", &employeeInitialQuantity);
Employee *employees = malloc (employeeInitialQuantity * sizeof (Employee));
for (i = 0; i < employeeInitialQuantity; i++) {
employees [i] .name = malloc (35);
printf ("\nType employee name %d:", i);
scanf ("%34s", employees[i].name);
printf ("\n%s", employees [i].name);
employees [i] .email = malloc (35);
printf ("\nEnter Employee Email% d:", i);
scanf ("%34s", employees [i].email);
printf ("\n%s", employees [i].email);
printf ("\nEnter employee age %d:", i);
scanf ("%d", & employees [i].age);
printf ("\n%d", employees [i].age);
}
while (1) {
printf ("1.Register more employees \n");
printf ("2.List employees \n");
printf ("3.Edit employee data \n");
printf ("4.Delete Employee \n");
scanf ("%d", &option);
if (option == 1) {
printf ("Do you want to register how many more employees?");
scanf ("%d", &newEmployeeQuantity);
employees = (Employee *) realloc (employees, newEmployeeQuantity * sizeof (Employee));
for (i = employeeInitialQuantity; i <= newEmployeeQuantity; i ++) {
employees [i] .name = malloc (35);
printf ("\nType employee name% d:", i);
scanf ("%34s", employees [i] .name);
printf ("\n%s", employees [i] .name);
employees [i] .email = malloc (35);
printf ("\nEnter Employee Email %d:", i);
scanf ("%34s", employees [i].email);
printf ("\n%s", employees [i].email);
printf ("\nEnter employee age %d:", i);
scanf ("%d", & employees[i] .age);
printf ("\n%d", employees[i].age);
}
employeeInitialQuantity = (employeeInitialQuantity + newEmployeeQuantity) -1;
}
else if (option == 3) {
printf ("Enter the employee number you wish to edit:");
int number;
scanf ("%d", & number);
printf ("Enter new employee name% d:", number);
scanf ("%34s", employees [number] .name);
printf ("Enter new employee email% d:", number);
scanf ("%34s", employees [number] .email);
printf ("Enter new employee age %d:", number);
scanf ("%d\n", & employees [number]. age);
}
}
return 0;
}
我正在尝试执行此语句:
制作一个管理员工(姓名、年龄、电子邮件)的程序。该程序应显示用户菜单, 有以下选项:
- 注册
A.该程序应该允许包含新员工,询问用户他想要包含多少新员工并将他们注册到员工数组中;
B.值得注意的是,应根据需要分配员工数组,避免 浪费内存;
C.名称和电子邮件字符串也必须动态分配,数组也应如此 员工。
- 列表
A.程序应显示注册员工列表,每行一个,用“------”分隔 --------------------- "。列表应在每一行显示姓名、电子邮件和年龄 如下:“姓名 - email@gmail.com - 25”。
- 编辑:
A.该程序应允许编辑特定员工。为此,应允许编辑。 来自员工在员工数组中的索引,或通过姓名搜索或 员工的电子邮件。
- 删除
A.该计划应允许排除特定员工。为此,应允许 从员工数组中的索引中删除员工,或从搜索中删除员工 员工姓名。
B.删除员工后,应重新排列数组,使其没有“漏洞”。
【问题讨论】:
标签: c pointers data-structures