VS_MFC:文件读写

  1. 设计对话框界面,一个用于保存数据的按钮,三个单选按钮用于选择数据类型,两个编辑框分别用来输入数据个数和保存的文件名。

    VS2013/MFC基于对话框编程:[19]保存txt文件
  2. 修改控件的ID:

    按钮:IDC_Save;

    单选按钮:IDC_Rand;IDC_Fibonacci;IDC_Factorial;

    编辑框:IDC_DataNum;IDC_txtName;

    VS2013/MFC基于对话框编程:[19]保存txt文件
  3. 修改属性,添加变量:

    第一个单选按钮的Group为true,添加变量int DataType;

    输入数据个数的编辑框的Number属性为true,添加变量UINT m_DataNum;

    输入文件名的编辑框:添加变量CString m_txtName;

    VS2013/MFC基于对话框编程:[19]保存txt文件
  4. 修改构造函数中变量的初始值,将数据个数默认值改为100,将文件名修改默认值为"Data.txt".

    VS2013/MFC基于对话框编程:[19]保存txt文件
  5. 编写保存函数,首先获取界面数据,然后判断数据类型,计算出对应的数据,通过CStdioFile类的对象将数据写入txt文件中,Open函数可以指定保存路径,默认保存在工程文件的Demo\Demo\文件夹下。

    1、随机数

    for (int i = 0; i < m_DataNum; i++)

    Data[i] = rand()%10000;

    2、斐波那契数列

    Data[0] = 1; Data[1] = 1;

    for (int i = 2; i < m_DataNum; i++)

    Data[i] = Data[i - 1] + Data[i - 2];

    3、阶乘

    for (int i = 0; i < m_DataNum; i++)

    {

    Data[i] = 1;

    for (int j = 1; j <= i+1; j++)

    Data[i] *= j;

    }

    4、文件保存

    CStdioFile file;

    file.Open(m_txtName, CFile::modeCreate | CFile::modeWrite | CFile::typeText);

    CString str;

    for (int i = 0; i < m_DataNum; i++)

    {

    str.Format(_T("%d\t%g\n"), i + 1, Data[i]);

    file.WriteString(str);

    }

    file.Close();

    AfxMessageBox(_T("已保存数据到 ")+m_txtName+_T(" 文件中!"));

    VS2013/MFC基于对话框编程:[19]保存txt文件
  6. 测试程序,启动调试,选择数据类型,设置数据个数和文件名称。

    1、随机数测试,设置100个数

    每次保存完都有提示。

    VS2013/MFC基于对话框编程:[19]保存txt文件
    VS2013/MFC基于对话框编程:[19]保存txt文件
    VS2013/MFC基于对话框编程:[19]保存txt文件
  7. 2、fibonacci数列测试,设置20个数

    VS2013/MFC基于对话框编程:[19]保存txt文件
    VS2013/MFC基于对话框编程:[19]保存txt文件
  8. 3、阶乘测试,设置15个数,阶乘增长速度很快,所以没必要保存太多。

    VS2013/MFC基于对话框编程:[19]保存txt文件
    VS2013/MFC基于对话框编程:[19]保存txt文件
    END

注意事项

  • 保存数据后别忘了用文件类的close函数关闭文件。

文件的查找

  当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。MFC中有一个专门用来进行文件查找的类CFileFind,使用它可以方便快捷地进行文件的查找。下面这段代码演示了这个类的最基本使用方法。

  CString strFileTitle;
  CFileFind finder;
  BOOL bWorking = finder.FindFile("C:\\windows\\sysbkup\\*.cab");

文件模式标志 说明

  CFile::modeCreate  创建方式打开文件,如文件已存在则将其长度设置为0

  CFile::modeNoInherit  不允许继承

  CFile::modeNoTruncate 创建文件时如文件已存在不对其进行截断

  CFile::modeRead 只读方式打开文件

  CFile::modeReadWrite 读写方式打开文件

  CFile::modeWrite 写入方式打开文件

  CFile::shareCompat 在使用过程中允许其他进程同时打开文件

  CFile::shareDenyNone 在使用过程中允许其他进程对文件进行读写

  CFile::shareDenyRead 在使用过程中不允许其他进程对文件进行读取

  CFile::shareDenyWrite 在使用过程中不允许其他进程对文件进行写入

  CFile::shareExclusive  取消对其他进程的所有访问

  CFile::typeBinary 设置文件为二进制模式

  CFile::typeText 设置文件为文本模式


猜你喜欢

转载自blog.csdn.net/qq_25241325/article/details/80611389
今日推荐