C 过早达到EOF

C 过早达到EOF,c,eof,C,Eof,读取代码为: int Function(FILE fpi*, int *Ncols, int *Nrows) { if (fscanf(fpi, "%d", Nrows) > 0) { return fscanf(fpi, "%d", Ncols); } else { printf("%s\n", "EOF reached."); return -1; } } (注意-函数只是一个替代名称)。该文件看起来像: 2 2

读取代码为:

int Function(FILE fpi*, int *Ncols, int *Nrows) {
    if (fscanf(fpi, "%d", Nrows) > 0) {
        return fscanf(fpi, "%d", Ncols);
    } else {
        printf("%s\n", "EOF reached.");
        return -1;
    }
}
(注意-函数只是一个替代名称)。该文件看起来像:

2 2
1 1
1 1
3 3
1 1 1
1 1 1
1 1 1
它遍历第一组指令,也就是说,它接受2和2,并将它们存储在ncol和nrow中,然后对以下2×2的数据集(一组数据)执行操作;但是,在主程序中到达while循环结束时:

int eof = Function(fpin1, &Rsize1, &Csize1);
while (eof > 0) {
    stuff

    eof = Function(fpin1, &Rsize1, &Csize1);
}

它只是死了

“刚死”还不够具体。点击EOF?出口?断层?鼻魔?另外,
文件fpi*
的语法无效…在
if
子句中有2个
fscanf
。它很可能在第二个返回eof,因为第一个可能已经读取了最后一个数字。您检查
fscanf
是否失败,然后假设这是因为它已达到eof。除非有你不给我们看的代码?@JoachimPileborg:但即使这样做也不会让这个问题变得更容易回答。花时间把这个问题变成一个完整的、可以回答的问题要好得多,伊姆霍。