C语言储存、读取、修改功能 有关问题出现“屯屯屯屯屯屯屯屯屯屯屯屯屯”
C语言储存、读取、修改功能 问题出现“屯屯屯屯屯屯屯屯屯屯屯屯屯”
我是新手,所以写得比较差。
一下这个程序可以运行,但是储存 读取 修改时 打印出现“屯屯屯屯屯屯屯屯屯屯屯屯屯”
太无奈了,请帮我看看。谢谢
[code=C/C++][/code]
#include"global.h"
//-------函数实现--------------------------
Link Create(Link Head)
{//创建一个带头节点的空链表。
Head=(Link)malloc(sizeof(Node));
if(!Head)
{
printf("分配内存失败!");
return 0;
}
Head->Next=NULL;
return Head;
}
void Release(Link Head)
{//释放链表。
Link ptr;//声明一个操作用的指针
while(Head!=NULL)
{
ptr=Head;
Head=Head->Next;
free(ptr);//释放借点资源
}
}
Link Add(Link Head)
{//前插法添加数据。
Link pNew;//声明一个新节点。
char again;
char code[10],name[30],sex,edubg[30],post[30],department[30],address[50],phone[20];
int year,wyear;
int wage;
do
{
pNew=(Link)malloc(sizeof(Node));
//数据域
printf("请输入职工工号:\n");
scanf("%s",code);
printf("请输入职工姓名:\n");
scanf("%s",name);
printf("请输入职工性别(M/F):\n");
getchar();
scanf("%c",&sex);
printf("请输入职工的出生年份(1900-2000):\n");
scanf("%d",&year);
while(year<1900||year>2000)
{
printf("请输入正确的年份。");
scanf("%d",&year);
}
printf("请输入职工的工作年份(1900-2012):\n");
scanf("%d",&wyear);
while(wyear<1900||wyear>2012)
{
printf("请输入正确的年份。");
scanf("%d",&wyear);
}
printf("请输入职工的学历:\n");
scanf("%s",edubg);
printf("请输入职工的职称:\n");
scanf("%s",post);
printf("请输入职工所在部门:\n");
scanf("%s",department);
printf("请输入职工的住址:\n");
scanf("%s",address);
printf("请输入职工的联系电话:\n");
scanf("%s",phone);
printf("请输入职工的月薪(小于60000):\n");
scanf("%d",&wage);
while(wage>60000)
{
printf("请输入正确的月薪数据。");
scanf("%d",&wage);
}
strcpy(pNew->m_Code,code);
pNew->m_Code[strlen(code)+1]='\0';
strcpy(pNew->m_Name,name);
pNew->m_Name[strlen(name)+1]='\0';
pNew->m_Sex=sex;
pNew->m_Year=year;
pNew->m_WYear=wyear;
strcpy(pNew->m_EduBG,edubg);
pNew->m_EduBG[strlen(edubg)+1]='\0';
strcpy(pNew->m_Post,post);
pNew->m_Post[strlen(post)+1]='\0';
strcpy(pNew->m_Department,department);
pNew->m_Department[strlen(department)+1]='\0';
strcpy(pNew->m_Address,address);
pNew->m_Address[strlen(address)+1]='\0';
strcpy(pNew->m_Phone,phone);
pNew->m_Phone[strlen(phone)+1]='\0';
pNew->m_Wage=wage;
//指针域
pNew->Next=Head->Next;
Head->Next=pNew;
printf("数据添加成功!是否继续添加?(Y/N):");
again=getchar();
again=toupper(again);
while(again!='Y'&&again!='N')
{
again=getchar();
again=toupper(again);
}
}while(again=='Y');
return Head;
}
bool Search(Link Head)
{//查询同时满足“姓名”和“部门”的职工信息。
Link ptr;
char department[30];
char name[30];
int flag=0;
int pp=0;
ptr=Head->Next;
printf("请输入部门:");
scanf("%s",department);
printf("请输入姓名:");
scanf("%s",name);
printf("\n\n\n----------------查询结果------------------\n");
printf("\n 工号 ┃ 姓名 ┃性别┃出生年份┃工作年份┃ 学历 ┃ 职称 ┃ 部门 ┃ 住址 ┃ 电话 ┃ 月薪 ┃");
while(ptr)
{
pp=(strcmp(ptr->m_Name,name)&&strcmp(ptr->m_Department,department));
if(!pp)
我是新手,所以写得比较差。
一下这个程序可以运行,但是储存 读取 修改时 打印出现“屯屯屯屯屯屯屯屯屯屯屯屯屯”
太无奈了,请帮我看看。谢谢
[code=C/C++][/code]
#include"global.h"
//-------函数实现--------------------------
Link Create(Link Head)
{//创建一个带头节点的空链表。
Head=(Link)malloc(sizeof(Node));
if(!Head)
{
printf("分配内存失败!");
return 0;
}
Head->Next=NULL;
return Head;
}
void Release(Link Head)
{//释放链表。
Link ptr;//声明一个操作用的指针
while(Head!=NULL)
{
ptr=Head;
Head=Head->Next;
free(ptr);//释放借点资源
}
}
Link Add(Link Head)
{//前插法添加数据。
Link pNew;//声明一个新节点。
char again;
char code[10],name[30],sex,edubg[30],post[30],department[30],address[50],phone[20];
int year,wyear;
int wage;
do
{
pNew=(Link)malloc(sizeof(Node));
//数据域
printf("请输入职工工号:\n");
scanf("%s",code);
printf("请输入职工姓名:\n");
scanf("%s",name);
printf("请输入职工性别(M/F):\n");
getchar();
scanf("%c",&sex);
printf("请输入职工的出生年份(1900-2000):\n");
scanf("%d",&year);
while(year<1900||year>2000)
{
printf("请输入正确的年份。");
scanf("%d",&year);
}
printf("请输入职工的工作年份(1900-2012):\n");
scanf("%d",&wyear);
while(wyear<1900||wyear>2012)
{
printf("请输入正确的年份。");
scanf("%d",&wyear);
}
printf("请输入职工的学历:\n");
scanf("%s",edubg);
printf("请输入职工的职称:\n");
scanf("%s",post);
printf("请输入职工所在部门:\n");
scanf("%s",department);
printf("请输入职工的住址:\n");
scanf("%s",address);
printf("请输入职工的联系电话:\n");
scanf("%s",phone);
printf("请输入职工的月薪(小于60000):\n");
scanf("%d",&wage);
while(wage>60000)
{
printf("请输入正确的月薪数据。");
scanf("%d",&wage);
}
strcpy(pNew->m_Code,code);
pNew->m_Code[strlen(code)+1]='\0';
strcpy(pNew->m_Name,name);
pNew->m_Name[strlen(name)+1]='\0';
pNew->m_Sex=sex;
pNew->m_Year=year;
pNew->m_WYear=wyear;
strcpy(pNew->m_EduBG,edubg);
pNew->m_EduBG[strlen(edubg)+1]='\0';
strcpy(pNew->m_Post,post);
pNew->m_Post[strlen(post)+1]='\0';
strcpy(pNew->m_Department,department);
pNew->m_Department[strlen(department)+1]='\0';
strcpy(pNew->m_Address,address);
pNew->m_Address[strlen(address)+1]='\0';
strcpy(pNew->m_Phone,phone);
pNew->m_Phone[strlen(phone)+1]='\0';
pNew->m_Wage=wage;
//指针域
pNew->Next=Head->Next;
Head->Next=pNew;
printf("数据添加成功!是否继续添加?(Y/N):");
again=getchar();
again=toupper(again);
while(again!='Y'&&again!='N')
{
again=getchar();
again=toupper(again);
}
}while(again=='Y');
return Head;
}
bool Search(Link Head)
{//查询同时满足“姓名”和“部门”的职工信息。
Link ptr;
char department[30];
char name[30];
int flag=0;
int pp=0;
ptr=Head->Next;
printf("请输入部门:");
scanf("%s",department);
printf("请输入姓名:");
scanf("%s",name);
printf("\n\n\n----------------查询结果------------------\n");
printf("\n 工号 ┃ 姓名 ┃性别┃出生年份┃工作年份┃ 学历 ┃ 职称 ┃ 部门 ┃ 住址 ┃ 电话 ┃ 月薪 ┃");
while(ptr)
{
pp=(strcmp(ptr->m_Name,name)&&strcmp(ptr->m_Department,department));
if(!pp)