Чтение в массив из txt файла

Итак, я пытаюсь заставить мою программу считывать массив структур из текстового файла, и она компилируется нормально, но, похоже, на самом деле не читает значения? .. И я понятия не имею, почему. Это соответствующая часть кода:

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);

Это текстовый файл (Название: Planets.txt)

Меркурий 120 50 500 12,1 30 2 Венера 120 50500 29,1 30 6 Земля 120 50500 32,2 30 7 Луна 120 15 50 5,3 30 2 Марс 120 50500 12,2 30 4 Юпитер 120 50500 81,3 30 10 Сатурн 120 50 500 34,3 30 8 Уран 120 50 500 28,5 30 5 Нептун 120 50500 36,6 30 9 Плутон 120 50 500 2,03 30 1

Кроме того, когда он запускает последний printf, он фактически ничего не печатает и не хранит никаких данных в структурах (когда он вызывается позже, он все обнуляется). Идеи?

См.: Как спросить и подумайте о подготовке минимальный воспроизводимый пример.

Paul R 24.05.2018 17:21

Примите ответ, если вас устраивает.

anoopknr 24.05.2018 17:57

У меня есть еще один вопрос .. Но на сайте написано, что мне нужно подождать два дня, чтобы снова опубликовать сообщение .. wtf? Правильно ли я просто вставил это ниже вышеупомянутого? ..

Liam 24.05.2018 19:09

где ты застрял.? Есть запись в файл ..?

anoopknr 24.05.2018 20:14

@Liam: Я вернул ваш вопрос к исходной форме. Если у вас есть новый вопрос, его нужно опубликовать отдельно, как новый вопрос. Вы должны проголосовать / принять ответ ниже, если он вам помог. Это также поможет повысить вашу репутацию и разблокировать привилегии на сайте.

Paul R 25.05.2018 10:33

Как мне принять это? .. И я здесь не надолго, ха-ха. Как только я закончу с этой глупой темой, я уйду ... Не могу дождаться, чтобы избавиться от нее.

Liam 25.05.2018 11:57

@Liam: рядом с ответом под кнопками "за" / "против" под кнопками "за" / "против" есть контур галочки (также известный как "галочка" на английском языке). Нажмите на это, и он должен стать зеленым. Вы также можете проголосовать за ответчика, пока находитесь там, чтобы выразить свою признательность за его помощь.

Paul R 25.05.2018 12:04

@PaulR Спасибо! Я просто слепой. По-видимому, мои голоса не учитываются, кстати

Liam 25.05.2018 16:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
8
87
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ошибка в вашей функции fscanf. Вы должны указать FILE pointer (inputFile This context) в качестве первого аргумента и оператор & (адрес функции Подобно scanf) перед сканированием целых чисел и чисел с плавающей запятой.

Попробуйте этот модифицированный код fscanf: -

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);

Ах, бездельник ... Я только что перепроверил обучающее видео, которое смотрю, он прокрадывается, не комментируя, вот почему я его пропустил! Я должен спросить, откуда вы знаете, где разместить эти символы? Обычно я просто играю с ними в своих переменных, пока программа не заработает должным образом.

Liam 24.05.2018 17:39

Проще говоря, другие, которые читают string (символьный массив), скорее всего, вам нужно использовать оператор &.

anoopknr 24.05.2018 17:43

@TormundGiantsbane Я читал ... Честно говоря, это не имело особого смысла. Программирование - не мое. Я терпеть не могу

Liam 24.05.2018 19:55

@anoopknr: Я откатил ваш ответ до предыдущей версии, чтобы он соответствовал исходному вопросу OP (до того, как OP радикально изменил его).

Paul R 25.05.2018 10:39

Другие вопросы по теме