【发布时间】:2018-04-27 05:10:10
【问题描述】:
我正在编写一个简单的程序,用于记录员工的数据。 我有一个初始化为 null 的结构数组,但它显示“0”而不是空白。
我的代码:
#define SIZE 4
struct EmployeeData {
int id;
int age;
double salary;
};
struct EmployeeData emp[SIZE] = { { { 0 } } };
[ ... ]
case 4: // Remove Employee
printf("Remove Employee\n");
printf("===============\n");
printf("Enter Employee ID: ");
scanf("%d", &j);
do {
for (i = 0; i < SIZE; i++) {
if (j == emp[i].id) {
printf("Employee %d will be removed\n", j);
emp[i].id = '\0';
emp[i].age = '\0';
emp[i].salary = '\0';
end = 1;
}
}
} while (end != 1);
break;
当我显示结构数组时,它会显示如下内容:
EMP ID EMP AGE EMP SALARY
====== ======= ==========
112 24 8999.99
113 29 7999.99
114 88 6999.99
0 0 0.00
即使我删除/删除员工,它也只会将其替换为 0,而不是将其留空。因此,当我删除一个员工时,例如 id #113,我只希望它是这样的:
EMP ID EMP AGE EMP SALARY
====== ======= ==========
112 24 8999.99
114 88 6999.99
代替:
EMP ID EMP AGE EMP SALARY
====== ======= ==========
112 24 8999.99
0 0 0.00
114 88 6999.99
0 0 0.00
我已经尝试了我在网上看到的所有内容,但没有任何帮助。 提前谢谢!
【问题讨论】:
-
您是否意识到通过编写
emp[i].salary = '\0';您将这些值分配给0 而不是“空白”?int和double在 C 中没有“空白”表示。 -
不要使用
do/while,只要找到员工时添加break语句,如果可以假设没有重复条目。 -
C 中没有空白结构这样的东西,所以你不能这样做。相反,您必须决定如何在应用程序级别表示员工缺勤。
-
请发布Minimal, Complete and Verifiable 示例。正如您所发布的那样,如果不解决问题,就不可能运行您的代码并进行检查。
标签: c