首页 > 解决方案 > FILE* 返回初始化变量并插入 FILE* 的输出中读取

问题描述

问题:我遇到的问题是我有一个包含 20 个整数的文件,而我要做的就是读取这 20 个整数。这发生在这个程序中......除了在开始时插入了一个附加值,这int num;是初始化的任何值。即使我删除了初始化,我也会得到一个默认整数值3739648.

我该如何补救?

int main() {
    FILE* fp = fopen("20integers.txt", "r");
    int num =0;

    fseek(fp, 0, SEEK_SET);

    if(fp == NULL) {
        return 1;
    }
    //fseek(fp, 5, SEEK_SET);
    while (!feof (fp))
    {
        printf ("%d ", num);
        fscanf (fp, "%d", &num);
    }

    fclose (fp);
    return 0;
}

输出:

0 1 20 17 1 14 12 9 88 61 16 7 11 7 6 31 47 3 47 18 2
Process finished with exit code 0

第一个 ' 0' 不应该在那里。

标签: cfile

解决方案


  • 您必须在打印之前读取整数
  • 你真的应该测试fscanf函数的返回,如果转换失败则退出循环:


while (1)
{
    if (1 != fscanf (fp, "%d", &num))
        break;

    printf ("%d ", num);
}

推荐阅读