Я просто вхожу на C с предыдущим знанием кодирования RPG. Как и многие до меня, я смущен строками, массивами и указателями и как с ними работать.Печать заполненного массива строк отпечатков мусора
Я работаю над программой, которая берет имя, экваториальный радиус и полярный радиус планет из файла данных, а затем вычисляет и выводит объем, площадь поверхности.
Моя основная функция имеет следующие объявления:
double equi_rad[iNumPlanets]; /* equitoral radii of planets */
double pol_rad[iNumPlanets]; /* polar radii of planets */
char *name[iNumPlanets]; /* array containing planet name */
(iNumPlanets
уже инициализированы как 8)
Я затем вызвать функцию load
:
load("radii.dat", equi_rad, pol_rad, iNumPlanets, name);
нагрузки читает через файл в цикле и заполняет массивы. Я проверил, что это работает правильно внутри функции, поэтому, похоже, нет смысла копировать этот бит кода. Это прототип:
int load(const char* filename, double *equitoral_radii, double *polar_radii, const int iNumPlanets, char *planet_name[]);
Назад в моей главной функции, то equi_rad
и pol_rad
массивы заполняются правильно и можно работать. Однако, когда я пытаюсь дополнить содержимое массива name
, это просто случайный вздор.
Может кто-нибудь объяснить, почему я могу успешно изменить массивы double
в функции, но не массивы строк?
Не могли бы вы показать нам, как вы заселяете «имя»? –
, а также то, как вы печатаете имя [index] – BigMike
'Загрузка читает файл в цикле и заполняет массивы. Я проверял, что это работает правильно внутри функции, поэтому, похоже, нет смысла копировать этот бит кода. «Кажется, что это противоречит« Назад в моей основной функции, массивы equi_rad и pol_rad заполнены правильно и могут быть работал с. Однако, когда я пытаюсь напечатать содержимое массива имен, это просто случайный вздор. Кажется, что нам нужно увидеть код для 'load', а также содержимое' radii.dat' ... –