C++ 文件读写fopen_s/fopen

最好使用fopen_s,使用fopen提示“not safe”,二者区别如下:
1…fopen_s的安全是在于比函数fopen多了溢出检测。
2.在使用上,函数fopen的返回值是文件指针,如果返回的文件指针为NULL时,则表示打开文件失败。而函数fopen_s的返回值是相应的错误代码,通过查看错误代码代表的含义,有助于你排查问题
以上参考该文章
下面给出自己的代码:

#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
	FILE *fp_w;
	FILE *fp_r;
//	fp_w = fopen("1.cvs", "a");
	fopen_s(&fp_w ,"1.csv", "a");
	for (int i = 0; i < 5; i++)
	{
		fprintf(fp_w, "%d,%d,%d\n", 1, 2, 3);
	}
	fclose(fp_w);
	cout << "写入成功!" << endl;


	// 读取
	int num[3],Judge;
//	fp_r = fopen("1.cvs", "r"); 
	Judge=fopen_s(&fp_r, "1.csv", "r");
	if (Judge == 0)
		cout << "文件打开成功!" << endl;
	for (int i = 0; i < 5; i++) 
	{                             
		fscanf_s(fp_r, "%d,%d,%d", &num[0], &num[1], &num[2]);
		cout << num[0] << "  " << num[1] << "  " << num[2] << endl;
	}
	fclose(fp_r);
	system("pause");
}
// a,a+ : 没有文件,创建一个新文件,在写入的时候不覆盖原有信息; 
// w,w+ : 可以自动创建一个文件,写
// r,r+ : 读,文件必须存在   + 号代表读写

注意:
1.fopen_s 中的参数要取地址符;
2.fscanf_s中储存数据的变量要取地址符;
3.关于fopen_s中打开方式的参数代码注释给出了说明,也可以参考这里
最后运行结果:
在这里插入图片描述
CSV表格中数据:
在这里插入图片描述
以上。
详细的没有研究,目前这些操作够用。

  • 13
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`fopen_s` 函数是一个用于读写文件的 C 标准库函数,它提供了一种更加安全的方式来打开文件。 我们知道,通常在 C 语言中,可以使用 `fopen` 函数来打开文件并返回一个文件指针,以便进行后续的文件读写操作。但是,`fopen` 函数存在一些安全隐患,例如在一些情况下可能无法处理文件名超长、无法处理文件打开失败等问题。 为了解决这些问题,C11 标准引入了 `fopen_s` 函数作为 `fopen` 函数的替代品。`fopen_s` 函数的原型如下: ```c errno_t fopen_s(FILE** pFile, const char* filename, const char* mode) ``` 其中,`pFile` 是一个指针的指针,用于存储打开的文件指针;`filename` 是要打开的文件名;`mode` 是打开文件的模式,和 `fopen` 函数的模式参数一致。 与 `fopen` 函数不同的是,`fopen_s` 函数在打开文件时需要传入 `pFile` 参数,可以更好地处理文件打开失败的情况。如果文件打开成功,`fopen_s` 函数返回 0,否则返回一个错误码。 使用 `fopen_s` 函数打开文件的示例代码如下所示: ```c #include <stdio.h> int main() { FILE* pFile; errno_t err; err = fopen_s(&pFile, "example.txt", "r"); if (err != 0) { printf("无法打开文件\n"); return 1; } // 文件操作 fclose(pFile); return 0; } ``` 在上述代码中,我们首先定义了一个 `FILE` 类型的指针 `pFile` 来存储打开的文件指针。然后,我们调用 `fopen_s` 函数来打开文件,如果函数返回值不为 0,则表示打开文件失败。 最后,我们可以进行文件的读写操作,并在文件使用完毕后调用 `fclose` 函数关闭文件。 综上所述,`fopen_s` 函数是一个更安全的文件打开函数,可以更好地处理文件打开失败的情况,并通过错误码返回错误信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值