帮我改一下这个C程序,就只有一个错误怎么也改不了,谢谢!
程序的主要功能是进行一个emp.dat文件(包含若干个员工的姓名和工资信息)的数据查询操作,按向上的方向键显示上一条员工信息,按向下的方向键显示下一条员工信息,按PgUp和PgDn键分别显示上/下一页员工信息.程序源文件如下:
-----------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <bios.h>
struct RECORD
{
char name[8];
int salary;
}emp;
main()
{
FILE*fp;
int display,page,inkey,inkeySCAN,recs,recno;
if((fp=fopen("emp","r"))==NULL)
{
printf("不能打开emp文件\n");
exit(0);
}
fseek(fp,0,SEEK_END);
recs=(ftell(fp)/sizeof(struct RECORD));
if(recs==0)
{
printf("emp没有任何记录\n");
fclose(fp);
exit(1);
}
page=5;
rewind(fp);
fread(&emp,sizeof(struct RECORD),1,fp);
printf("当前记录==> 姓名:%s 工资:%d\n",emp.name,emp.salary);
rewind(fp);
recno=1;
do
{
inkey=bioskey(0);
inkeySCAN=(inkey&0xFF00)>>8;
display=1;
switch(inkeySCAN)
{
case 72:if(recno>1)
{
recno--;
fseek(fp,(recno-1)*sizeof(struct RECORD),SEEK_SET);
}
else
{
printf("\t当前记录是第一个记录...\n");
display=0;
}
break;
case 80:if(recno<recs)
{
recno++;
fseek(fp,(recno-1)*sizeof(struct RECORD),SEEK_SET);
}
else
{
printf("\t当前记录是最后一个记录...\n");
display=0;
}
break;
case 81:if(recs-recno<page)
{
display=0;
printf("\t当前在最后页中...\n");
}
else
{
recno+=page;
fseek(fp,(recno-1)*sizeof(struct RECORD),SEEK_SET);
}
break;
case 73:if(recno<=page)
{
display=0;
printf("\t当前在第一页中...\n");
}
else
{
recno-=page;
fseek(fp,(recno-1)*sizeof(struct RECORD),SEEK_SET);
}
break;
default:display=0;
printf("\t按键无效...\n");
break;
}
if(display)
{
fread(&emp,sizeof(struct RECORD),1,fp);
printf("当前记录==> 姓名:%s 工资:%d\n",emp.name,emp.salary);
}
}while(inkeySCAN!=1);
fclose(fp);
}
-----------------------------------------------------------------
用VC6.0调试时会提示一条错误说Cannot open include file:'bios.h',而把include<bios.h>删掉后又说bioskey未定义,程序无法运行;最后我把include<bios.h>和inkey=bioskey(0);这两个东西一起删了,调试时通过了,如果没提供emp.dat文件的话运行正常,但一有emp.dat文件,程序又运行异常,麻烦各位高手帮我改一下,谢了!
参考答案:bios.h 不是标准的C库函数,VC不支持,你可以用其他的API函数来代替bioskey,如getch.