1 #include<stdio.h> 2 #define INF 10000000 3 int main() 4 { 5 FILE* fin , * fout ; 6 errno_t afin, afout; 7 afin = fopen_s(&fin, "data.in", "rb"); 8 afout = fopen_s(&fout, "data.out", "wb"); 9 int x, n = 0, min = INF, max = -INF, s = 0; 10 if (fout != NULL && fin != NULL) { 11 while (fscanf_s(fin, "%d", &x)==1) { 12 s += x; 13 if (x < min) min = x; 14 if (x > max) max = x; 15 n++; 16 } 17 fprintf(fout, "%d %d %.3f\n", min, max, (double)s / n); 18 fclose(fin); 19 fclose(fout); 20 } 21 return 0; 22 }
1.在vs2019中直接用fopen等以前的文件操作函數是會報錯的,這里使用的加了“_s”,簡單的查了一下,新版和老版本函數的這種類型的改動是出於安全和方便考慮
fopen_s:vs2019使用的話需要注意這個函數的返回值不和之前一樣返回指針,而是errno_t(錯誤類型),形式是一些數值,通過這些數值可以比較快查詢到出錯的原因;另一個需要注意的是參數的類型,是(FILE **_Stream,const char*_FILEName,const char *Mode)
fscanf_s:這里要注意返回類型是int
2.文件的路徑要注意是直接放在工程下目錄,當然可以放在別處,不過需要改代碼了;