文档详情

利用C或C++读写文件.doc

发布:2017-12-15约3.24千字共4页下载文档
文本预览下载声明
1、使用标准打开/保存文件对话框,获取文件路径; 2、C读写文件法; 3、C++读写文件法。 1、使用标准打开/保存文件对话框 为”浏览”按钮添加消息响应函数并在函数体中添加以下代码: 使用标准打开文件对话框获取文件路径: CFileDialog FileDlg(ture, _T(txt), ?NULL, OFN_FILEMUSTEXIST|OFN_HIDEREADONLY, 文本文件(*.TXT)|*.TXT|All Files(*.*)|*.*||); CFileDialog FileDlg(ture) if( FileDlg.DoModal()!= IDOK ) return; ?CString fileName; ?? fileName = FileDlg.GetFileName();? 使用标准保存文件对话框获取文件路径: CFileDialog FileDlg(false, _T(txt), ?NULL, OFN_FILEMUSTEXIST|OFN_HIDEREADONLY, 文本文件(*.TXT)|*.TXT|All Files(*.*)|*.*||);CFileDialog FileDlg(false) if( FileDlg.DoModal()!= IDOK ) return; CString fileName; ?? fileName = FileDlg.GetFileName();? 2、C读写法 对于数据量较小的文件,C语言提供了格式读写函数fscanf()和fprintf(), fscanf(文件指针,格式字符串,输入列表); ff(文件指针,格式字符串,输列表); A example: 读文件: FILE * fp; fp=fopen(m_Filein,r); // m_Filein为文件路径 for(i=0;iLine;i++) //Line=100,如右图所示 { fscanf(fp,%d,data[i].num); fscanf(fp,%lf,data[i].x); fscanf(fp,%lf,data[i].y); } fclose(fp); 待读取文件格式 写文件: FILE * fp1; fp1=fopen(m_WResult,w+); // m_ WResult为保存文件路径 for(i=0;iLine;i++) { fprintf(fp1, %.2lf ,result[i].Xs); fprintf(fp1, %.2lf , result[i].Ys); fprintf(fp1, %.2lf\n, result[i].Zs); } fclose(fp1); 写成的文件格式 在二进制数据量大的时候最好采用fread()和fwrite()函数,以减少内存消耗,节省处理时间: fread(内存地址,数据项字节数,数据项个数,文件指针) fwrite(内存地址,数据项字节数,数据项个数,文件指针) A example: 读取文件: struct stud_type { Int num; Char name[8]; Char sex[5]; Int age; }stu[1000]; 待读取文件格式 for(i=0;i1000;i++) fread(stu[i],sizeof(struct_type),1,fp); 写文件: for(i=0;iSIZE;i++)   fwrite(stu,sizeof(struct_type),1,fp); //写出来的文件格式同上 3、C++读写法 C++提供的最基础的方法是利用CFile类的Read/ReadHuge和Write/WriteHuge, CFile::Read/ReadHuge (将要用来存贮文件数据的内存地址, 读取字节数); CFile::Write/WriteHuge (将要写进文件中的数据的内存地址, 写入字节数); A example:把RAW格式文件转换成BMP格式 读文件: CFile fileraw,filebmp; fileraw.Open(m_path_raw,CFile::modeRead | CFile::shareDenyWrite,NULL); DWORD filesize = fileraw.GetLength(); hDIB = (HDIB)::GlobalAlloc(GMEM_MOVEABLE|GMEM_ZEROINIT,fil
显示全部
相似文档