|
求一个能用的C++ 读取forpro DBF文件并转成 TXT的程序,谢谢 |
|
|
数据库的操作还是用ADO直接操作,然后再根据自己的格式输出信息到TXT文件比较好。
|
|
|
有个DBF的库,前年还移植过,可以直接在纯C下操作DBF的,可以增删改。现在工作系统加密,不能传输。
搜一下了 |
|
|
forpro和foxpro不是一回事!
关于自己是否适合编程的很简单的测试: A里面有10处以上文字或标点错误 A不适合编程(理由:打字准确度偏低、粗心大意) 如果想从A变成B的话,到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习” |
|
|
Excel就可以读.dbf的。
|
|
|
多谢楼上几位
是一个单独的DBF文件,所以没法用ADO之类的 也不能利用DBF库之类的,因为要WIN,LINUX,UNIX都能用 因此希望就读取一个dbf文件,根据文件结构去读取记录内容,我刚开始学C++,因此不知道怎么读dbf文件 ——————————– |
|
|
100分 |
#include <stdio.h>
#include <string.h>
#pragma pack(push,1)
typedef struct HeadOfDbf {
unsigned char tab;
unsigned char year;
unsigned char month;
unsigned char day;
unsigned int recnum;
unsigned short offset;
unsigned short reclen;
char save[20];
} InfoOfDbfHead;
typedef struct HeadOfDbfIndex {
unsigned char fname[11];
unsigned char type;
int addr;
unsigned char width;
unsigned char doc;
char save[14];
} InfoOfDbfIndex;
#pragma pack(pop)
InfoOfDbfHead Head;
InfoOfDbfIndex Index[48];
int offset[48],n;
FILE *fdbf;
unsigned int rec,field,fieldnum,i;
char buf[256];
//-------------------------------------------------------
int main(int argc,char *argv[])
{
if (argc==1) {
fprintf(stderr,"Usage:\n%s filename[.DBF]",argv[0]);
return 1;
}
strcpy(buf,argv[1]);
if (buf[strlen(buf)-4]!=""."") strcat(buf,".dbf");
if ((fdbf=fopen(buf,"rb"))==NULL) {
fprintf(stderr,"Can not fopen file [%s]!",buf);
return 2;
}
fseek(fdbf,0L,SEEK_SET);
fread(&Head,sizeof(InfoOfDbfHead),1,fdbf);
fieldnum=(Head.offset-1)/32-1;
fseek(fdbf,32,SEEK_SET);
n=0;
printf("|");
for(i=0;i<fieldnum;i++) {
offset[i]=n;
fread(&Index[i],sizeof(InfoOfDbfIndex),1,fdbf);
printf("%-*s|",Index[i].width,Index[i].fname);
n=n+Index[i].width;
}
for (rec=0;rec<Head.recnum;rec++) {
printf("\n|");
for (field=0;field<fieldnum;field++) {
fseek(fdbf,(long)(Head.offset+1+rec*(long)Head.reclen+offset[field]),SEEK_SET);
fread(buf,1,Index[field].width,fdbf);
buf[Index[field].width]=0;
printf("%s|",buf);
}
}
fclose(fdbf);
return 0;
}
|
|
很感谢 zhao4zhong1 大神
我会好好学习一下 另外我有两个担心 1、如果DBF文件很大,比如5G甚至更大,会不好报错? 2、如果DBF有MEMO型字段会不会解析不正确? 3、另外我想搞个设置,比如字段3和字段5不要,也可能设置成字段1、7和字段8不要打印出来 |
|
|
多谢zhao4zhong1 大神! |
|
|
谢谢赵老师,学习了,而且还能直接用在项目里,解决了原先DBF文件解析速度过慢的问题
|
|