首页 > 解决方案 > 仅当条件为真 C++ 时,如何将 cString 分配给结构变量?

问题描述

我有一个程序从文本文件中读取员工信息并将其存储到一个结构中。我还有一个F代表全职员工和P代表兼职员工的枚举。如果员工是全职员工,我会从他们支付的工会会费中扣除 5 美元。文本文件如下: 输入

这是我的结构和枚举:

 enum EmpType{
      F, P
 };

struct EmpData{
     char* name;
     float payrate;
     float hours;
     EmpType employee_type;
     double pay;
     char deductions[];
};

如果从员工的工资中扣除了 5 美元,我需要打印出“已扣除工会会费”。我想我需要某种if声明,如果扣除了会费,我会打印出来,并且在未扣除费用时不做任何事情。这就是我到目前为止所拥有的。我已经尝试将扣除分配给指针并更改类型,但我无法理解要做什么。当我尝试将“扣除的工会会费”分配给员工扣除时,它说“表达式必须是可修改的值”。

employee[entries]->pay = employee[entries]->payrate * employee[entries]->hours; // calculating pay

if (employee[entries]->employee_type == F)
{
    employee[entries]->pay = employee[entries]->pay - 5;
}
if (employee[entries]->pay == employee[entries]->pay - 5)
{
    employee[entries]->deductions = // code goes here?
}

感谢您的任何帮助。这是我的第一篇文章,所以如果不清楚或有什么问题,请告诉我。这是输出的样子(除了扣除外,我一切正常):输出

标签: c++structure

解决方案


编译错误“表达式必须是可修改的值”让我感到困惑。

声明静态数组的大小。即,结构 EmpData 中的扣除。然后用strcpy把“Union会费扣减”复制到deductions中。

strcpy (employee[entries]->deductions, "Union dues detected");

推荐阅读