weui 自定义对话框:请C高手帮我看看那出错了
#include <conio.h>
#include <stdlib.h>
struct employee
{
int age;
char *name;
double salary;
}*pemp;
void update(employee *company,int id,int age,char *name,double salary);
employee readin();
void main()
{
struct employee company[30];
int ca,id;
printf("\n\t\t******************工资统计系统******************\n\n");
printf("\t1.登记新雇员信息;2.计算雇员工资合计;3.计算雇员平均工资\n请按键选择:");
scanf("%d",&ca);
printf("\n");
switch (ca)
{
case 1:
printf("请输入雇员编号:");
scanf("%d",&id);
company[id-1]=readin();
update(company,id-1,company[id-1].age,company[id-1].name,company[id-1].salary);
printf("\n%d,%s,%f",company[id-1].age,company[id-1].name,company[id-1].salary);
break;
case 2:
break;
}
}
void update(employee *company,int id,int age,char *name,double salary)
{
struct employee *pt;
pt=company;
(pt+id)->age=age;
(pt+id)->name=name;
(pt+id)->salary=salary;
// printf("\n%d,%s,%f",(pt+id)->age,(pt+id)->name,(pt+id)->salary);
}
employee readin()
{
struct employee employees;
printf("\n请输入雇员年龄信息:");
scanf("%d",&employees.age);
printf("\n请输入雇员姓名信息:");
scanf("%s",&employees.name);
printf("\n请输入雇员薪水信息:");
scanf("%f",&employees.salary);
//传递给数组保存
return employees;
}
我把改好的代码发出来,你的错误有:
1.employee readin()返回了一个局部量你又没有对"="操作符重载,这个操作有问题,至少不安全。
2.scanf("%s",&employees.name); name你定义的是指针,而读入数据时他还是个空指针,这个操作会报错。
3.double salary 把这个定义改成 float就可以运行了。我也不知道为什么。
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
struct employee
{
int age;
char name[20];
float salary;
}*pemp;
void update(employee *company,int id,int age,char *name,double salary);
void readin(employee *employees);
void main()
{
struct employee company[30];
int ca,id;
printf("\n\t\t******************工资统计系统******************\n\n");
printf("\t1.登记新雇员信息;2.计算雇员工资合计;3.计算雇员平均工资\n请按键选择:");
scanf("%d",&ca);
printf("\n");
switch (ca)
{
case 1:
printf("请输入雇员编号:");
scanf("%d",&id);
readin(&company[id-1]);
update(company,id-1,company[id-1].age,company[id-1].name,company[id-1].salary);
printf("\n%d,%s,%f",company[id-1].age,company[id-1].name,company[id-1].salary);
break;
case 2:
break;
}
}
void update(employee *company,int id,int age,char *name,double salary)
{
struct employee *pt;
pt=company;
(pt+id)->age=age;
sprintf((pt+id)->name,"%s",name);
(pt+id)->salary=salary;
// printf("\n%d,%s,%f",(pt+id)->age,(pt+id)->name,(pt+id)->salary);
}
void readin(employee *employees)
{
printf("\n请输入雇员年龄信息:");
scanf("%d",&employees->age);
printf("\n请输入雇员姓名信息:");
scanf("%s",&employees->name);
printf("\n请输入雇员薪水信息:");
scanf("%f",&employees->salary);
//传递给数组保存
}