#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Lnode{
int num;
char s[20];//姓名
char sex[20];//性别
int age;
char x[20];//学历
double mon;//工资
char dre[20];//住址
double tel;//电话
struct Lnode *next;//定义节点
};
struct Lnode *head,*tail;
void open(FILE *fp)//把文件的内容读取到链表
{
struct Lnode *p=NULL;
if((fp=fopen("worker.txt","r"))==NULL)
{
printf("文件打开失败!\n");
exit(0);
}
else
{
while(!feof(fp))
{
p=(struct Lnode*)malloc(sizeof(struct Lnode));
fscanf(fp,"%d %s %s %d %s %lf %s %lf\n",&p->num,p->s,p->sex,&p->age,p->x,&p->mon,p->dre,&p->tel);
//就是这一步有问题
p->next=NULL;//创建节点
if(head==NULL)
{
head=p;
}
else{
tail->next=p;
}
tail=p;
p=p->next;
}
}
fclose(fp);
}
int main(void)
{
int a,x;
struct Lnode *p;
head=p=NULL;
printf("----------欢迎进入职工信息管理系统-----------\n");
printf("----------管理员请按1,职工请按2--------------\n");
scanf("%d",&a);
enter(a);
FILE *f;
open(f);
if(a==2)
printf("-------------------------------\n浏览按(1), 查询按(2),数据统计按(6),退出按(0)\n-------------------------------\n");
if(a==1)
printf("------------------------------------------------------------------------------\n浏览按(1), 查询按(2), 删除按(3), 修改按(4), 插入按(5), 数据统计按(6),退出按(0)\n------------------------------------------------------------------------------\n");
scanf("%d",&x);
while(x!=0)
{
switch(x)
{
/* case 1:see(head);break;
case 2:find(head);break;
case 3:Delete(head);break;
case 4:Change(head);break;
case 5:Add(head);break;
case 6:Tong(head);break;*/
}
printf("-----------------------------------\n按0退出,按其他选择功能:\n");
scanf("%d",&x);
}
// Writeout(head,f);
}
要求是写职工信息系统,我用的方法是事先把数据写在文本里面的。现在就是运行到open这个函数就进行不下去了,关键是我一开始调试了open函数是对的!就在我把所有代码写完运行了一次过后,就再也无法正确运行了。
单步调试就是在注释那一步出现了cannot access the memory of address.究竟是什么原因呢????希望能有大佬帮帮我!!
附上文件名 worker.txt 内容是
01 Bob 男 30 本科 6200.9 红星小欧洲 191310251
02 Lucy 女 26 本科 5102.85 彗星 18230982721
03 Jack 男 20 大专 3005.0 太升路 18334099812
04 Mumu 女 23 本科 6000.0 幸福家园 16136310223
05 Jude 男 43 高中 9998.4 思思与 13557902810
06 Luck 女 20 本科 5200.1 罗马家园 181721021
07 Fancy 男 22 本科 3010.5 中心花园 184200458
08 Lili 女 40 本科 7080.6 尊师领土 15172920304