1 #include
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.文件的路径要注意是直接放在工程下目录,当然可以放在别处,不过需要改代码了;
💡 关键要点
1 #include 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,