=
fopen
(
filename
,
"a")
a为追加写入
"r"
不能以该方式打开一个不存在的文件,否则出错。
"w"
以只写方式打开一个文件文件。
若文件不存在,则系统自动建立该文件;
若文件已经存在,则在打开时将该文件删去,然后重新建立一个新文件。
"a"
以向文件末尾添加数据的方式打开一个文本文件。
若文件不存在,则系统自动建立该文件。
"r+"
以读/写方式打开一个已有的文本文件
即,打开文件后,既可对文件进行读 *** 作,又可对文件进行写 *** 作。
"w+"
以读/写方式建立一个新文本文件。
注意"w+"与"r+"的区别,两者都是以读/写方式打开文件,但"r+"方式只能打开一个已有的文件,而"w+"方式可以打开已有的文件(但会删除该文件中的原有内容),也可以打开一个不存在的文件(即建立一个新文件)。
"a+"
以读/写方式打开一个文本文件,对文件的读写 *** 作在文件的末尾进行。
我写了一个。
界面一个文本框两个按钮,文本框关联一个CString型变量m_Data,设置属性为Vertical scroll和Want return。
两个按钮对应的读写函数分别如下
void CFileTxtDlg::OnRead()
{
// TODO: Add your control notification handler code here
CFileDialog fDlg(TRUE)
fDlg.m_ofn.lpstrFilter = "Text Files(*.txt)\0*.txt\0\0"
if(fDlg.DoModal() == IDOK)
{
CStdioFile stdFile
stdFile.Open(fDlg.GetPathName(), CFile::modeRead | CFile::typeBinary)
DWORD fileLen = stdFile.GetLength()
char *pBuf = new char[fileLen + 1]
pBuf[fileLen] = 0
stdFile.Read(pBuf, fileLen)
UpdateData()
m_Data = pBuf
UpdateData(FALSE)
delete pBuf
stdFile.Close()
}
}
void CFileTxtDlg::OnWrite()
{
// TODO: Add your control notification handler code here
UpdateData()
CFileDialog fDlg(FALSE)
fDlg.m_ofn.lpstrFilter = "Text Files(*.txt)\0*.txt\0\0"
fDlg.m_ofn.lpstrDefExt = "txt"
if(IDOK == fDlg.DoModal())
{
CStdioFile stdFile
stdFile.Open(fDlg.GetPathName(), CFile::modeCreate | CFile::modeWrite | CFile::typeBinary)
stdFile.WriteString(m_Data)
stdFile.Close()
}
}
如要源代码发消息
//写入文件void CMFCApplication1Dlg::OnBnClickedWriteBtn()
{
// MFC的CFile类写入文件
CFile file(L"1.txt", CFile::modeCreate | CFile::modeWrite )
char *cstr=new char[128]
GetDlgItemTextA(m_hWnd, IDC_EDIT1, cstr,128)
int n = strlen(cstr)
file.Write(cstr,strlen(cstr))
file.Close()
}
//读取文件
void CMFCApplication1Dlg::OnBnClickedReadfileBtn()
{
// MFC的CFile类读取文件
CFile file(L"1.txt", CFile::modeRead)
int n=file.GetLength()
char *pStr = new char[n+1]
file.Read(pStr, n)
pStr[n ] = 0
file.Close()
SetDlgItemTextA(m_hWnd, IDC_EDIT1, pStr)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)