C++读写dbf文件头,向第12-13字节里添加两个校验字符

本人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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值