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表格中數據:
在這裏插入圖片描述
以上。
詳細的沒有研究,目前這些操作夠用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章