首页 > 解决方案 > 我可以在文件中使用 SCANF,然后让流返回一个位置吗?

问题描述

我有个问题。我有两个文件测试。让我们假设两个文件名都是“文件”。

我将对这两个文件进行测试,其中一个是这样的:

1 2

另一个是:

1 2

2                   
 4

3
    6

我想要做的是读取文件并保存数字并测试它们。因此,如果有 2 个数字,它会保存 2 个数字并在数字中进行测试并关闭文件,但如果文件中有 4 个或 6 个或 8 个数字,我想重复我的函数 BODY 并且只关闭我的文件,直到没有剩下的号码。但是有一个问题,我使用条件IF(fscanf(fp, "%d", nova))来检查是否还有任何东西,如果还有数字,我会扫描一个应该在变量 HEADS 中的数字。

我想要做的是检查除了前两个之外是否还有更多数字,如果有,我想再次启动我的函数并且不因为 fscanf 条件而跳过一个数字。

int Body(){

    int Head, Arms;
    int nova;
    FILE *fp;

    fp=fopen("file", "r");
    fscanf(fp, "%d", &Head);
    fscanf(fp, "%d", &Arms);
    test(head, arms);
    if(fscanf(fp, "%d", &nova)==EOF) fclose(fp);
    else ....

    return 0;
}

标签: c

解决方案


使用循环而不是额外的循环scanf()来检查您是否已到达终点。

while (fscanf(fp, "%d %d", &Head, &Arms) == 2) {
    ...
}

推荐阅读