利用C或C++读写文件.doc
文本预览下载声明
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
显示全部