本文實例講述了VC++操作文本文件的方法,實現在txt文件指定位置插入內容。對于VC++愛好者有一定的學習參考價值。
主要功能代碼如下:
void CGoToFileDlg::OnPaint(){ if (IsIconic()) { CPaintDC dc(this); SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); }}HCURSOR CGoToFileDlg::OnQueryDragIcon(){ return (HCURSOR) m_hIcon;}void CGoToFileDlg::OnButopen(){ CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, "All Files(*.TXT)|*.TXT||",AfxGetMainWnd());//構造文件打開對話框 if (dlg.DoModal() == IDOK)//判斷是否按下"打開"按鈕 { m_Path = dlg.GetPathName(); //獲得文件路徑 FILE *pFile = fopen(m_Path,"r+t");//以讀寫形式打開文件 if (pFile)//判斷文件是否被正確打開 { char pchData[1000] = {0};//定義數據緩沖區 fread(pchData,sizeof(char),1000,pFile); //讀取數據到緩沖區中 fclose(pFile);//關閉文件 m_File = pchData; } UpdateData(FALSE); }}void CGoToFileDlg::OnButinsert(){ UpdateData(); FILE *pFile = fopen(m_Path,"r+t");//以讀寫形式打開文件 if (pFile)//判斷文件是否被正確打開 { fseek(pFile,m_Goto,SEEK_SET);//定位文件 CString str = m_Text + m_File.Right(m_File.GetLength()-m_Goto);//設置字符串 fputs(str.GetBuffer(0),pFile); //向文件中寫入數據 fseek(pFile,0,SEEK_SET);//重新定位文件 char pchData[1000] = {0};//定義數據緩沖區 fread(pchData,sizeof(char),1000,pFile); //讀取數據到緩沖區中 fclose(pFile);//關閉文件 m_File = pchData; UpdateData(FALSE); }}
代碼備有較為詳細的注釋,相對來說不難理解。讀者還可以進一步完善程序代碼,以實現更為強大的功能。
新聞熱點
疑難解答