#define M 100
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main (int argc,char *argv[])
{
FILE *fp;
int recno, headlength,reclength;//recno是记录序号,headlength是文件头长度,reclength是记录长度
int recnumber;//记录的个数
char t1,t2,t3,t4;
char fname[100],str[M];
if(argc<2)//若文件输入参数不够,则提示输入DBF文件名
{
printf("Input file name (.dbf):");
gets(fname);
}
else
strcpy(fname, argv[1]);
if(strchr(fname,0x2e)==NULL)/*若无扩展名,则加上,0x2e代表"."*/
strcat(fname,".dbf");//连接.dbf
if((fp=fopen(fname,"rb"))==NULL)//文件的一般打开方式
{
printf("Open File %s error\n",fname);
getchar();
exit(0);
}
printf("Display Database File: ");
printf("%s\n",fname);
/*计算记录个数 recnumber */
fseek(fp,4L,0);//将文件指针移到合适处,以下同
fscanf(fp,"%c%c%c%c",&t1,&t2,&t3,&t4);//输入参数,以下同
recnumber=t1+t2*0x100+t3*0x10000+t4*0x1000000;//完成计算,以下同
/*计算文件头长度 headlength */
fseek(fp,8L,0);
fscanf(fp, "%c%c", &t1,&t2);
headlength=t1+t2*0x100;
/*计算记录长度 reclength */
fseek(fp,10L,0);
fscanf(fp, "%c%c", &t1,&t2);
reclength=t1+t2*0x100;
/*将文件指针定位到第一记录开始处,并录入记录数据*/
fseek(fp,headlength,0);
for (recno=1; recno<=recnumber; recno++)
{
fgets(str,reclength+1,fp);
printf("Record:%u,%s\n",recno,str);
}
fclose(fp);
}
C语言实现打印输出DBF文件
4星 · 超过85%的资源 需积分: 9 190 浏览量
2010-04-22
00:48:41
上传
评论
收藏 6KB RAR 举报
sunshinekaikai
- 粉丝: 1
- 资源: 3
最新资源
- 基于matlab实现增强型烟花算法!文章最初由杜振鑫发表,后来北大博士重新修改后发表,这是源代码.rar
- 5G网优案例:传输IPV6分片报文Reserved字段校验不通过导致VONR呼叫失败.docx
- 基于matlab实现针对旋转机械采集到得振动信号进行消燥处理.rar
- 基于matlab实现主要计算小波功率谱(wavelet power spectrum) 全球小波谱
- 2024各队伍获奖情况
- SIMATIC-WinCC-Runtime-Professional-V19安装包-链接地址.txt
- 5G网优案例:参数漏配导致EPSFB回落后重定向到5G使语音无法拨通案例.docx
- Windows系统上安装Anaconda的步骤.txt
- 毕业设计基于air302 - nbiot智能快递柜存储源码.zip
- Windows系统上安装Anaconda的步骤
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈