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.文件的路径要注意是直接放在工程下目录,当然可以放在别处,不过需要改代码了;
原文:https://www.cnblogs.com/Npc-Hb/p/14136399.html