首页 > 解决方案 > 从文件读取不会返回任何内容,但会被访问

问题描述

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp ;
    int n,i,x[n];

    fp=fopen("fin.txt","r");

    if (fp == NULL) {
        puts("Error opening filename.txt");
        return EXIT_FAILURE;
}

    fscanf("%d",&n);
    for (i=0;i<n;i++)
        fscanf("%d",&x[i]);
    printf("%d ",n);
    fclose(fp);
    return 0;
}

我正在尝试从文件中读取,尽管它不打印任何内容。我检查了它是否打开了文件,它确实打开了。虽然没有返回数据。这是为什么?输入文件:5 3 4 5 8 2 ----------------------------------------- --EDIT : 该文件是项目的文件夹。

标签: c

解决方案


你没有fscanf正确调用。

第一个参数fscanfFILE *你要读取的文件。您省略了此参数,因此该函数将您传入的字符串作为第一个参数并尝试将其作为FILE对象读取。

fp作为每个调用中的第一个参数传递。

这也不符合您的预期:

int n,i,x[n];

这并不意味着数组的大小xn. 这意味着 的大小x设置为 的当前n,该值尚未被赋值。

x在读入 for 的值之后移动 to 的声明n

int rval = fscanf(fp, "%d",&n);
if (rval != 1) return EXIT_FAILURE;
int x[n];
for (i=0;i<n;i++)
    fscanf(fp, "%d",&x[i]);

推荐阅读