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
- mapgis6.7二次开发vc6_demo 之三(文件操作通用函数)
- mapgis6.7二次开发vc6_demo 之五(输出VCT函数之点图层)
- mapgis6.7二次开发vc6_demo 之五(输出VCT函数之线图层)
- mapgis6.7二次开发vc6_demo 之五(输出VCT函数之面图层)
- mapgis6.7二次开发vc6_demo 之五(输出VCT函数之表属性段)
- mapgis6.7二次开发vc6_demo 之五(输出VCT函数 总入口)
- mapgis6.7二次开发vc6_demo 之六(mapgis公用函数二次封装库)
- mapgis6.7二次开发vc6_demo 之四(VCT导出之 version=1,topo=0)
- mapgis6.7二次开发vc6_demo 之二(主窗体回调函数)
- mapgis6.7二次开发vc6_demo 之一(主窗体构架)
- 二次开发之 自定义函数
- dedecms5.7二次开发之常用函数列表及所在文件位置
- ini文件三之操作
- Revit二次开发之“族”操作
- Revit二次开发之“族”操作
- Python之numpy教程(三):转置、乘积、通用函数
- android通用文件操作
- ECshop二次开发之文件结构
- 基于UML的嵌入式硬件系统模型研究
- s3c2410看门狗与字符设备、混杂设备和平台设备
- 千万级pv高性能高并发网站架构与设计
- poj 1730 Perfect Pth Powers
- 伪码之美
- mapgis6.7二次开发vc6_demo 之三(文件操作通用函数)
- C++程序设计实验报告(9-2)
- treeStore可以有的配置项
- 补码——计算机中数的表示
- asp.net 单点登录,浏览器关闭清空session
- Android Zip压缩解压缩
- stagefright框架(二)- 和OpenMAX的運作
- 第九周实验报告5
- 第九周实验报告(一)