Передача массива Struct в качестве указателя - PullRequest
0 голосов
/ 07 июня 2018

Я хотел бы передать массив struct в качестве аргумента функции print, а затем получить доступ к его членам для печати.Почему я получаю ошибку указателя, когда я не использую указатели?

в main.c:

struct city {
    double longitude;
    double latitute;
    char name[buf_size]; 
};
int numCitToRead = 10;
struct city cities[25];
printCities(&numCitToRead, cities);

Примечание. Массив Struct инициализируется в функции анализа файла.Это всегда 25 полей, но если numCitToRead равен 10, будут заполнены только 10 полей

int printCities(int* t_numCitToRead, struct city t_cities[25]) {

    for (unsigned short i = 0; i < *t_numCitToRead; i++) {
        printf("\n\n\tCity %d: ", i+1);
        printf("\nname:\t\t%s", t_cities[i].name);
        printf("\nlongitude:\t%f", t_cities[i].longitude);
        printf("\nlatitude:\t%f", t_cities[i].latitute);
    }
    return 0;
}

Я надеюсь, что кто-то может мне помочь!

Привет

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Спасибо всем за огромную поддержку и полезные комментарии и предложения.

После корректировки нескольких различных вещей, которые были отмечены людьми в этой теме, он, наконец, успешно скомпилирован.

Я изменил следующие параметры:

  • включил файл заголовка в определение типа данных структуры города в файле printFunctions

  • инициализировал структуру для разрешения указателяошибки

Спасибо за отличные отзывы и комментарии / предложения.

Хорошего дня!

0 голосов
/ 07 июня 2018

Изменили код и теперь он работает.давайте попробуем это:

#include <stdio.h>

struct city {
    double longitude;
    double latitute;
    char *name; 
  };

int printCities(int* t_numCitToRead, struct city t_cities[25]) {

    for (unsigned short i = 0; i < *t_numCitToRead; i++) {
    printf("\n\n\tCity %d: ", i+1);
        printf("\nname:\t\t%s", t_cities[i].name);
        printf("\nlongitude:\t%f", t_cities[i].longitude);
        printf("\nlatitude:\t%f", t_cities[i].latitute);
    }
    return 0;
}

int main() {
  int numCitToRead = 10;
  struct city cities[25];
  // create dummy data
  for(int i =1; i<=25; i++)
  {
   cities[i-1].name = "name";
   cities[i-1].longitude =  10 * i;
   cities[i-1].latitute = 10 * 20;
  } 
 printCities(&numCitToRead, cities);
 return 0;
}

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...