读书人

编译没有关问题执行却出现异常。求大

发布时间: 2012-03-22 17:43:57 作者: rapoo

编译没问题,执行却出现错误。急求大侠指教
问题出在

void see(struct worker *head)
{
struct worker *ptr;
FILE *fq3;
int i;

fq3=fopen("worker_list.txt","r");
for(ptr=head;!feof(fq3);ptr=ptr->next){
fread(ptr,sizeof(struct worker),1,fq3);
}
if(head==NULL){
printf("\n\t\t无信息!\n");
return;
}

for(ptr=head;ptr;ptr=ptr->next){
printf("姓名:%s\n",ptr->name);
printf("性别:%s\n",ptr->sex);
printf("年龄:%d\n",ptr->age);
printf("出生日期:%d年%d月%d日\n",ptr->year,ptr->month,ptr->day);
printf("工号:%ld\n",ptr->num);
printf("联系电话:%ld\n",ptr->tel);
printf("地址:%s\n",ptr->addr);
printf("工资:%d\n",ptr->salary);
printf("学历:%s\n",ptr->degree);

}
printf("退出请输入0,返回请输入任意键:");
scanf("%d",&i);
if(i==0){
printf("谢谢使用!\n");
exit(0);
}
}


[解决办法]
传进来的指针无效,或者指针所指结构体内的内存无效.反正是内存无效..
[解决办法]

C/C++ code
void see(struct worker *head)  {struct worker *ptr;FILE *fq3;int i;fq3=fopen("worker_list.txt","r");//未作判断文件是否成功打开for(ptr=head;!feof(fq3);ptr=ptr->next){fread(ptr,sizeof(struct worker),1,fq3);//传值错误,应该是传给链表节点指针做指向内容}if(head==NULL){//建议在函数头进行判断printf("\n\t\t无信息!\n");return;}fclose(fq3);//文件没有关闭for(ptr=head;ptr;ptr=ptr->next){printf("姓名:%s\n",ptr->name);printf("性别:%s\n",ptr->sex);printf("年龄:%d\n",ptr->age);printf("出生日期:%d年%d月%d日\n",ptr->year,ptr->month,ptr->day);printf("工号:%ld\n",ptr->num);printf("联系电话:%ld\n",ptr->tel);printf("地址:%s\n",ptr->addr);printf("工资:%d\n",ptr->salary);printf("学历:%s\n",ptr->degree);}printf("退出请输入0,返回请输入任意键:");scanf("%d",&i);if(i==0){printf("谢谢使用!\n");exit(0);}} 

读书人网 >C语言

热点推荐