本人C++小白,如有错误,还请指正,谢谢。
写这个函数,是因为本人项目里用到了。
/**
描述:测试读取dbf,和写入dbf备用地址,校验字符
创建人:jk.zheng
创建时间:20151211
*/
#include "afx.h"
#include "stdio.h"
/**
从DBF文件头12-13字节上读取校验字符。
jk.zheng@20151211
*/
char* OnReadDbfHead(const char* DbfFileName,char str[2])
{
char *ch=str;
FILE* m_DbfFile_fp; //****Dbf文件指针
//打开dbf文件
if((m_DbfFile_fp=fopen(DbfFileName,"rb+"))==NULL)
{
return ch;
}
//指针跳到第12个字节位置,开始准备读取校验字符
fseek(m_DbfFile_fp,12,0);
//char ch[2];
fread(ch,sizeof(char),2,m_DbfFile_fp);
//printf("%c%c",ch[0],ch[1]);
fclose(m_DbfFile_fp);
return ch;
}
/**
向DBF文件头里写入校验字符,在12-13字节上。
jk.zheng@20151211
*/
int OnWriteDbfHead(const char* DbfFileName,char str[2])
{
char *ch=str;
FILE* m_DbfFile_fp; //****Dbf文件指针
//打开dbf文件
if((m_DbfFile_fp=fopen(DbfFileName,"rb+"))==NULL)
{
return 0;
}
//向备用地址写入两个字符'y','k',用来验证使用
fseek(m_DbfFile_fp,12,0);
int ret;
ret = fwrite(ch,sizeof(char),2,m_DbfFile_fp);
//printf("%d",ret);
return ret;
}
int _tmain(int argc, _TCHAR* argv[])
{
const char* dbffilename;
dbffilename="C:\\Users\\jkzheng\\Desktop\\a1537zkk.dbf";
//写入校验字符
/**
char str[2]={'y','k'};
int ret;
ret = OnWriteDbfHead(dbffilename,str);
if(ret=0){
printf("%s","文件被占用!");
return 0;
}
if(ret=2){
printf("%s%d","写入校验字符成功!",ret);
}else{
printf("%s%d","写入校验字符失败!",ret);
}
*/
//读取校验字符
char str2[2];
OnReadDbfHead(dbffilename,str2);
if(sizeof(str2)!=2){
printf("%s%d","读取校验字符长度不正确!",strlen(str2));
return 0;
}
if(str2[0]!='y'&&str2[1]!='k'){
printf("%s","读取校验字符有误!");
return 0;
}
printf("%s%c%c\n","校验字符为:",str2[0],str2[1]);
return 0;
}