weui 自定义对话框:请C高手帮我看看那出错了

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/01 14:46:07
#include <stdio.h>
#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);
//传递给数组保存
}