fscanf参数无效,该怎么解决

fscanf参数无效
VS2015下调试,Dev C++下调试都出错。VS2015调试时指向stdio.h的fscanf的参数错误,Dev C++直接表示编译的程序无响应然后返回0。小白求问这是为什么?是代码的问题还是编译器的问题?代码原型是刘汝佳的算法白书的数据统计II。
#include<stdio.h>
#include<stdlib.h>
#pragma warning(disable:4996)
int main()
{
FILE *fin, *fout;
fin = fopen("data.in", "rb");
fout = fopen("data.out", "wb");
const int boundary = 0x7FFFFFFF;
int x, max = -boundary, min = boundary, numbers = 0, sum = 0;
while (fscanf(fin, "%d", &x) == 1)
{
if (x > boundary || x < -boundary) return 6;
if (x < min) min = x;
if (x > max) max = x;
numbers++;
sum += x;
}
fprintf(fout, "%d %d %d", max, min, sum / numbers);
fclose(fin);
fclose(fout);
return 0;
}

fscanf参数无效,该怎么解决
fscanf参数无效,该怎么解决
fscanf参数无效,该怎么解决
------解决思路----------------------
我猜测不是代码问题  也不是编译器问题。
编译器很少出问题 出问题几乎都是优化导致的异常 你应该接触不到 所以不要怀疑编译器当遇到问题呢时。
别说你刚学 就算学啦2年的C 你问他 在你学习生涯中 你遇到过几个编译器问题 导致程序逻辑异常的换个编译器就正常啦的。
不是特别底层 很少接触这类问题。如果是书上的代码 我感觉错的可能也比较低,写书的也不是白痴,都能写书啦,水准应该
不比你差。只是一般人写说 存在一种信息的不对称性,对于运行这个程序 作者并没有把一个新手在第一次运行这个程序会
出现的惯性思维考虑到,也没有注意提示什么的。
我猜测问题应该是这样的。

1.data.in   , data.out 这俩个文件存在吗?
2.如果存在 你把他们放置的位置是.exe的同一目录吗?

------解决思路----------------------
fscanf、fprintf往往是对文本文件读写的,打开方式是r、w,而不是二进制方式的rb、wb,他们与fread、fwrite配套
------解决思路----------------------
#include<stdio.h>
#include<stdlib.h>
#pragma warning(disable:4996)
int main()
{
    FILE *fin, *fout;
    fin = fopen("data.in", "rb");
    if (NULL==fin) {
        printf("Can not open file data.in!\n");
        return 1;
    }
    fout = fopen("data.out", "wb");
    const int boundary = 0x7FFFFFFF;
    int x, max = -boundary, min = boundary, numbers = 0, sum = 0;
    while (fscanf(fin, "%d", &x) == 1)
    {
        if (x > boundary 
------解决思路----------------------
 x < -boundary) return 6;
        if (x < min) min = x;
        if (x > max) max = x;
        numbers++;
        sum += x;
    }
    fprintf(fout, "%d %d %d", max, min, sum / numbers);
    fclose(fin);
    fclose(fout);
    return 0;
}