mapgis6.7二次开发vc6_demo 之三(文件操作通用函数)

来源:互联网 发布:调查报告数据统计样本 编辑:程序博客网 时间:2024/05/22 14:14

mapgis6.7二次开发vc6_demo 之三(文件操作通用函数)

//FileOpClass.cpp文件内容如下所示:

//////////////////////////////////////////////////////////////////////文件操作//#include FileOpClass////////////////////////////////////////////////////////////////////#include  "demo.h"char* LogFileName="AppErrorLog.log";char* CurExeDir;//文件操作的属性FILE* fp;char* filepath="";//实现 获取当前可执行文件所在目录char* GetCurDir(void){//推荐用如下方法来得到当前程序所在目录比较安全:    //void _splitpath( const char *path, char *drive, char *dir, char *fname, char *ext );    //函数来分解开始提到的_pgmptr,然后再用    //void _makepath( char *path, const char *drive, const char *dir, const char *fname, const char *ext );    //函数来对分解后的路径进行组合。这两个函数结合起来功能强大,使用灵活,//基本上所有的有关目录和路径方面的操作都可以搞定.    //(1)char* szFilePath=new char[MAX_PATH];memset(szFilePath,0,MAX_PATH); GetModuleFileNameA(NULL,szFilePath,MAX_PATH);//GetModuleFileNameW(NULL,szFilePath,MAX_PATH);char* szfp=new char[strlen(szFilePath)+1];strcpy(szfp,szFilePath);int srcLen=strlen(szfp)+1;char* Driver=new char[srcLen];char* dir=new char[srcLen];char* fn=new char[srcLen];char* ext=new char[srcLen];//    memset(Driver,0,srcLen); memset(dir,0,srcLen); memset(fn,0,srcLen); memset(ext,0,srcLen); //分解路径_splitpath(szfp,Driver,dir,fn,ext);char* dri=new char[strlen(Driver)+1];strcpy(dri,Driver);    char* dir_t=new char[strlen(dir)+1];strcpy(dir_t,dir);//组合目录int len=strlen(dri)+strlen(dir_t);char* result=new char[len];memset(result,0,len); sprintf(result, "%s\\%s",dri,dir_t);char* r=new char[strlen(result)+1];strcpy(r,result);return r;}//实现 合并字符串函数char* UnionStr(const char* A,const char* B){    int len=0;string str_A(A);string str_B(B);len=strlen(str_A.data())+strlen(str_B.data());char* result=new char[len];memset(result,0,len);sprintf(result, "%s%s",str_A.data(),str_B.data());//sprintf(result, "%.*s%.*s", strlen(A), A, strlen(B), B);char* r=new char[strlen(result)+1];strcpy(r,result);return r;}char* strcat_lc(const char* A,const char* B){    return UnionStr(A,B);}//实现 写日志int WriteToLog(char* str){    FILE* log;char* curdir;if(CurExeDir==NULL){        CurExeDir=GetCurDir();}curdir=CurExeDir;char* Logfile=UnionStr(curdir,LogFileName);log=fopen(Logfile,"a+");if(log==NULL)  return 0;fprintf(log,"%s\n",str);fclose(log);return 1;}int WriteToLog(const char* str){    FILE* log;char* curdir;if(CurExeDir==NULL){        CurExeDir=GetCurDir();}curdir=CurExeDir;char* Logfile=UnionStr(curdir,LogFileName);log=fopen(Logfile,"a+");if(log==NULL)  return 0;fprintf(log,"%s\n",str);fclose(log);return 1;}int WriteToLog_f_delete(void){char* curdir;if(CurExeDir==NULL){        CurExeDir=GetCurDir();}curdir=CurExeDir;char* Logfile=UnionStr(curdir,LogFileName);    return f_delete(Logfile);}const char* StrCopy(const char* src){if(src==NULL) return NULL;string tmp(src);return tmp.data();}char* strcpy_lc(const char* src){     if(src==NULL) return NULL; string tmp(src); const char* ct=tmp.data(); char* t=new char[strlen(ct)]; strcpy(t,ct); return t;}//实现 字符串是否相等函数bool EqStr(const char* A,const char* B){     bool r=true; char* t_A=new char[strlen(A)+1]; strcpy(t_A,A);     char* t_B=new char[strlen(B)+1]; strcpy(t_B,B);     int ALen=strlen(t_A); int BLen=strlen(t_B); if(ALen>=BLen) ALen=BLen;  {         for(int i=0;i<ALen;i++) {             if(t_A[i]!=t_B[i]) { r=false; break; } } } return r;}bool IsNumber(string str){   bool r=true;   const char* t=str.c_str();   int Len=strlen(t);   for(int i=0;i<Len;i++)   {       if(!isdigit(t[i]))   {           r=false;   break;   }   }      return r;}//-------------------------------------------------------//实现 设置文件操作的路径void f_SetFilePath(char* pfilepath){filepath=pfilepath;}int f_delete(char* pfilepath){    return remove(pfilepath);}//实现 打开文件操作bool f_OpenFile_r(void){        char* path=filepath;        if((fp=fopen(path,"r"))==NULL)    {    printf("file cannot be opened\n");return false;    }return true;}bool f_OpenFile_w(void){        char* path=filepath;        if((fp=fopen(path,"w"))==NULL)    {    printf("file cannot be opened\n");return false;    }return true;}//实现 检查文件是否结束函数 int f_EndFile(void){return feof(fp);}//实现 读取下一行函数char* f_NextLine(){char line[4000];if(fgets(line,4000,fp)!=NULL){char* ret=new char[strlen(line)+1];strcpy(ret,line);        return ret;}return NULL;}//实现 写入一行函数int f_WriteLine(char* line){if(fp!=NULL){       return fprintf(fp,"%s\n",line);}return -1;}//实现 保存内存缓存数据函数int f_FlushFile(void){    if(fp!=NULL){   return fflush(fp);}return -1;}//实现 关闭文件函数int f_CloseFile(void){if(fp!=NULL){   return fclose(fp);}return -1;}//--------------------------

--the--end--

--vp:hsg

--create date:2012-04-12

原创粉丝点击