你好,请问,MFC中怎样在指定的路径创建一个TXT文档,并把指定数组中的数据写入其中,数组更新一次写一次
你好,请问,MFC中怎样在指定的路径创建一个TXT文档,并把指定数组中的数据写入TXT文档中。注:数组中的数据是利用socket发送过来的,所以数组是一直在更新的,这里希...
你好,请问,MFC中怎样在指定的路径创建一个TXT文档,并把指定数组中的数据写入TXT文档中。
注:数组中的数据是利用socket发送过来的,所以数组是一直在更新的,这里希望每次数组更新后地,都能把更新的数据存入TXT文档中。谢谢
void C文件读写Dlg::OnWriteButton()
{
char* pszFileName="F:\\myfile.txt";
CStdioFile myFile;
CFileException fileException;
if(myFile.Open(pszFileName,CFile::typeText|CFile::modeCreate|CFile::modeReadWrite|CFile::modeNoTruncate),&fileException)
{
CString strOrder;
strOrder.Format("%d,%.3f\t",66,88.88);
myFile.WriteString(strOrder);
myFile.Close(); }
else
{
TRACE("Can't open file %s,error=%u\n",pszFileName,fileException.m_cause);
}
}
这是MFC新建的一个对话框里的一个按钮的消息处理函数,默认用的Unicode,如果改成多字符,这段代码没问题了,但是其它地方又会出现很多问题。所以整个工程还是需要是Unicode。我想知道怎样能保持Unicode不变,而让上面这段代码能正确执行。谢谢! 展开
注:数组中的数据是利用socket发送过来的,所以数组是一直在更新的,这里希望每次数组更新后地,都能把更新的数据存入TXT文档中。谢谢
void C文件读写Dlg::OnWriteButton()
{
char* pszFileName="F:\\myfile.txt";
CStdioFile myFile;
CFileException fileException;
if(myFile.Open(pszFileName,CFile::typeText|CFile::modeCreate|CFile::modeReadWrite|CFile::modeNoTruncate),&fileException)
{
CString strOrder;
strOrder.Format("%d,%.3f\t",66,88.88);
myFile.WriteString(strOrder);
myFile.Close(); }
else
{
TRACE("Can't open file %s,error=%u\n",pszFileName,fileException.m_cause);
}
}
这是MFC新建的一个对话框里的一个按钮的消息处理函数,默认用的Unicode,如果改成多字符,这段代码没问题了,但是其它地方又会出现很多问题。所以整个工程还是需要是Unicode。我想知道怎样能保持Unicode不变,而让上面这段代码能正确执行。谢谢! 展开
4个回答
展开全部
void C文件读写Dlg::OnWriteButton()
{
char* pszFileName="F:\\myfile.txt";
CStdioFile myFile;
CFileException fileException;
if(myFile.Open(pszFileName,CFile::typeText|CFile::modeCreate|CFile::modeReadWrite|CFile::modeNoTruncate),&fileException)
{
CString strOrder;
strOrder.Format("%d,%.3f\t",66,88.88);
myFile.WriteString(strOrder);
myFile.Close(); }
else
{
TRACE("Can't open file %s,error=%u\n",pszFileName,fileException.m_cause);
}
}
{
char* pszFileName="F:\\myfile.txt";
CStdioFile myFile;
CFileException fileException;
if(myFile.Open(pszFileName,CFile::typeText|CFile::modeCreate|CFile::modeReadWrite|CFile::modeNoTruncate),&fileException)
{
CString strOrder;
strOrder.Format("%d,%.3f\t",66,88.88);
myFile.WriteString(strOrder);
myFile.Close(); }
else
{
TRACE("Can't open file %s,error=%u\n",pszFileName,fileException.m_cause);
}
}
展开全部
void CTestDlgDlg::OnGetpath()
{
// TODO: Add your control notification handler code here
char *pch="abdcefghigklmnop";
CFileDialog dlg(FALSE,"txt","baocun",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"TEXT FILES(*.txt)\0.txt\0");
if(IDOK==dlg.DoModal())
{
CFile fp(dlg.GetFileName(),CFile::modeCreate | CFile::modeWrite |CFile::modeNoTruncate);
fp.SeekToEnd();
fp.Write(pch,strlen(pch));
fp.Close();
}
}
每次再次写的时候会弹出对话框,文件已存在,是否替换,选是就可以了,如果嫌麻烦,
CFileDialog dlg(FALSE,"txt","baocun",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"TEXT FILES(*.txt)\0.txt\0");
把这句改成CFileDialog dlg(FALSE,"","suibian");保存名字也不用取,因为是用文件其实是用CFile创建的,名字由CFile文件指定
吧你要写的数组替换掉我的字符串就可以了
{
// TODO: Add your control notification handler code here
char *pch="abdcefghigklmnop";
CFileDialog dlg(FALSE,"txt","baocun",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"TEXT FILES(*.txt)\0.txt\0");
if(IDOK==dlg.DoModal())
{
CFile fp(dlg.GetFileName(),CFile::modeCreate | CFile::modeWrite |CFile::modeNoTruncate);
fp.SeekToEnd();
fp.Write(pch,strlen(pch));
fp.Close();
}
}
每次再次写的时候会弹出对话框,文件已存在,是否替换,选是就可以了,如果嫌麻烦,
CFileDialog dlg(FALSE,"txt","baocun",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"TEXT FILES(*.txt)\0.txt\0");
把这句改成CFileDialog dlg(FALSE,"","suibian");保存名字也不用取,因为是用文件其实是用CFile创建的,名字由CFile文件指定
吧你要写的数组替换掉我的字符串就可以了
追问
我现在已经利用CStdioFile实现了TXT文件的写入。但是,有了新的问题,每次点击写入按钮后,不论之前TXT里有无内容,无论是何内容,最后都会变成按钮消息处理函数里字符串里的内容。而我要的是,点一次,写入一次字符串里的内容,也就是说不覆盖前面写入的内容。可以吗?
追答
不覆盖前面写入的内容当然是可以的。
我平时都用cflile的,cstdiofile用的比较少,不过cstdiofile是从cfile派生出来的,上面的程序用cfile写的,可以实现,用cstiofile应该更能实现。你把写入模式改成上面的那样CFile::modeCreate | CFile::modeWrite | CFile::modeNoTruncate,其中CFile::modeNoTruncate就是不覆盖模式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char filename[]="C:\\test.txt";
char message[]="this is a test message\r\n";
FILE* hFileDst = fopen(filename, "wb");
fprintf(hFileDst, message);
fclose(hFileDst);
char message[]="this is a test message\r\n";
FILE* hFileDst = fopen(filename, "wb");
fprintf(hFileDst, message);
fclose(hFileDst);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询