fopen/fwrite写文件例子

本文介绍在MFC环境下使用fopen进行文件操作的方法,包括CString与char*之间的转换,以及如何利用fopen保存实时数据。示例代码展示了如何创建、打开并写入.txt文件,特别注意数据类型转换及文件操作模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于fopen和open的区别可参考https://www.cnblogs.com/hnrainll/archive/2011/09/16/2178706.html

                                                      https://blog.youkuaiyun.com/kaiandshan/article/details/43226529

                                                      https://www.cnblogs.com/NickyYe/p/5497659.html

当遇到MFC工程里要数据保存到本地时,如果以前没接触MFC,想使用fopen/fwrite,而不想去查一大堆Windows API的东西,头都要大。牵扯到CString和string以及char*的转换,烦。

看看:FILE * fopen(const char * path, const char * mode); fopen的参数类型是char*,但你能获取的路径信息只能是CString

类型转换可参考:https://www.cnblogs.com/bluestorm/p/3168720.html

                                https://www.cnblogs.com/maowang1991/p/3570328.html

就这样转来转去,严重影响进度。

下面先来个小例子

void CStrTestDlg::OnOK() 
{
	// TODO: Add extra validation here
	int j = 100;
	while(1)
	{
		if(j > 115) j = 100;
		int i;
		FILE *fp = NULL;
		CString str;
		str.Format("%d",j++); 
		CString path =  "C:\\datatemp\\"+ str + ".txt";//路径
		char* pFileName = path.GetBuffer(path.GetLength()+1);
		fp = fopen(pFileName, "w+");
		if (NULL != fp)
		{
			for (i = 0; i < 15; i++)
			{
			   char s[32] = {0};
			   sprintf(s,"%f",(double)i + j);
			   strcat(s, "\r\n");
			  fwrite(s, strlen(s),1,fp);
			}
		}
	 if(fp != NULL)
     fclose(fp);
	}
	CDialog::OnOK();
}

这是一个模拟要保存实时数据的例子,也就是说每次都更新最新的数据(覆盖),本来路径信息和数据可以通过参数传进来,这里只是用一个循环模拟一下。

说明:

1.建了个MFC工程,基于对话框的,点“确定”按钮即可进入OnOK函数(响应函数);

2.假设path是传进来的路径(每次都不一样),是CString类型,那么在fopen前需要转一下,

          char* pFileName = path.GetBuffer(path.GetLength()+1);

这里使用这种方法。其他方法可参考上面的链接。

3.fopen第二个参数"w+"表示可读可写,如果文件存在则清除,不存在创建。

 对于对文件操作的模式选择可以百度

结果看看文件保存情况:

最后说明一点:fwrite,如果不将数据转为字符串,则在文件里可能为乱码。原因是文本以字符显示,对应的ASCII码如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值