最好使用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表格中數據:
以上。
詳細的沒有研究,目前這些操作夠用。