C 从txt文件读入数组

C 从txt文件读入数组,c,arrays,file,struct,C,Arrays,File,Struct,所以,我试图让我的程序从一个文本文件读入一个结构数组,它编译的很好,但看起来并不是真的在读取值?。。我不知道为什么。这是守则的相关部分: typedef struct Planet { char Planet_Name[30]; double Fuel; double Velocity; double Height; double Gravity; int Maximum_Thrust; double Difficulty; }Planet; //read the Planets f

所以,我试图让我的程序从一个文本文件读入一个结构数组,它编译的很好,但看起来并不是真的在读取值?。。我不知道为什么。这是守则的相关部分:

typedef struct Planet
{
char Planet_Name[30];
double Fuel;
double Velocity;
double Height;
double Gravity;
int Maximum_Thrust;
double Difficulty;
}Planet;


    //read the Planets from a file
    FILE* inputFile = fopen("Planets.txt", "r");
    if(inputFile == NULL)
    {
        perror("Error. File unavailable");
        exit(1);
    }

    for(j=0; j<10; j++)
    {   
        fscanf("%29s %lf %lf %lf %lf %d %lf", SolarSystem[j].Planet_Name, 
        SolarSystem[j].Fuel, SolarSystem[j].Velocity, 
        SolarSystem[j].Height, SolarSystem[j].Gravity, 
        SolarSystem[j].Maximum_Thrust, SolarSystem[j].Difficulty);
    }

    printf("Please select a planet by entering the corresponding number: 
    Mercury[0], Venus[1], Earth[2], Moon[3], Mars[4], Jupiter[5], Saturn[6], 
    Uranus[7], Neptune[8]\n");

    scanf("%d",&PlanetNum);

    printf("You have chosen %s", SolarSystem[PlanetNum].Planet_Name);
这是txt文件标题:Planets.txt

水银120 50 500 12.1 30 2 金星1205050029.1306 接地120 50 500 32.2 30 7 月亮120 15 50 5.3 30 2 火星120 50 500 12.2 30 4 木星120 50 500 81.3 30 10 土星120 50 500 34.3 30 8 天王星120 50 500 28.5 30 5 海王星120 50 500 36.6 30 9 冥王星120 50 500 2.03 30 1

除非它运行最终的printf,否则它实际上不会打印任何内容,也不会在以后调用时在结构中存储任何数据,它的值都是零。 想法?

错误在于您的fscanf功能。在扫描整数和浮点之前,必须提供文件指针inputFile此上下文作为与scanf函数类似的第一个参数和&operator地址

尝试此修改的fscanf代码:-


请看:如果你满意的话,考虑准备一个接受的答案。我还有一个问题。但是网站上说我要等两天才能再次发布..wtf?我把它粘贴到上面的下面对吗?@Liam:我已经把你的问题恢复到原来的形式了。如果你有一个新问题,那么它需要作为一个新问题单独发布。如果下面的答案对你有帮助,你应该投票/接受。这也将有助于建立您的声誉并解锁网站上的特权。@PaulR谢谢!我只是瞎了。显然我的选票不算在内。。我只是重新检查了我正在看的教程视频,他偷偷地把它放了进来,没有发表任何评论,这就是为什么我错过了它!我必须问一下,你怎么知道这些符号放在哪里?我通常只是在变量中处理它们,直到程序正常运行。简单地说,除了读取字符串数组,你很可能需要使用&operator。@Liam@TormundGiantsbane我有一个读取。。说实话没有多大意义。编程不是我的事。我受不了it@anoopknr当前位置我已将您的答案回滚到上一版本,以便在OP彻底改变之前与OP的原始问题保持一致。
fscanf(inputFile,"%s%lf%lf%lf%lf%d%lf",SolarSystem[j].Planet_Name,&SolarSystem[j].Fuel, &SolarSystem[j].Velocity, &SolarSystem[j].Height, &SolarSystem[j].Gravity,&SolarSystem[j].Maximum_Thrust, &SolarSystem[j].Difficulty);