VC++在TXT文件指定位置追加内容的方法
本文实例讲述了VC++操作文本文件的方法,实现在txt文件指定位置插入内容。对于VC++爱好者有一定的学习参考价值。
主要功能代码如下:
voidCGoToFileDlg::OnPaint()
{
if(IsIconic())
{
CPaintDCdc(this);
SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);
intcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&rect);
intx=(rect.Width()-cxIcon+1)/2;
inty=(rect.Height()-cyIcon+1)/2;
dc.DrawIcon(x,y,m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
HCURSORCGoToFileDlg::OnQueryDragIcon()
{
return(HCURSOR)m_hIcon;
}
voidCGoToFileDlg::OnButopen()
{
CFileDialogdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"AllFiles(*.TXT)|*.TXT||",AfxGetMainWnd());//构造文件打开对话框
if(dlg.DoModal()==IDOK)//判断是否按下"打开"按钮
{
m_Path=dlg.GetPathName();//获得文件路径
FILE*pFile=fopen(m_Path,"r+t");//以读写形式打开文件
if(pFile)//判断文件是否被正确打开
{
charpchData[1000]={0};//定义数据缓冲区
fread(pchData,sizeof(char),1000,pFile);//读取数据到缓冲区中
fclose(pFile);//关闭文件
m_File=pchData;
}
UpdateData(FALSE);
}
}
voidCGoToFileDlg::OnButinsert()
{
UpdateData();
FILE*pFile=fopen(m_Path,"r+t");//以读写形式打开文件
if(pFile)//判断文件是否被正确打开
{
fseek(pFile,m_Goto,SEEK_SET);//定位文件
CStringstr=m_Text+m_File.Right(m_File.GetLength()-m_Goto);//设置字符串
fputs(str.GetBuffer(0),pFile);//向文件中写入数据
fseek(pFile,0,SEEK_SET);//重新定位文件
charpchData[1000]={0};//定义数据缓冲区
fread(pchData,sizeof(char),1000,pFile);//读取数据到缓冲区中
fclose(pFile);//关闭文件
m_File=pchData;
UpdateData(FALSE);
}
}
代码备有较为详细的注释,相对来说不难理解。读者还可以进一步完善程序代码,以实现更为强大的功能。