Проблема с вложенной структурой - PullRequest
0 голосов
/ 19 октября 2011

Как создать массив узлов в структуре. Я загрузил свой образец.

 struct timebasedSpecificTimesIntervalNode
 {
   int hrs;
   int min;
   int sec;
 };

 struct timebasedSpecificTimesInterval
 {
     struct timebasedSpecificTimesIntervalNode* nodes;
     int count;
     char *cFilePath;
 };

Как создать массив узлов для этой структуры timebasedSpecificTimesInterval.

  struct timebasedSpecificTimesInterval specificTimes;

Как создать массив из 3 узлов для этой структуры.

EDIT

создать структуру для этих значений

  hrs:5,2,3 min 23,58,4 sec 54,12,2

Thnks

Ответы [ 3 ]

2 голосов
/ 19 октября 2011
int main(void) {
    struct timebasedSpecificTimesInterval data;
    data.count = 3;
    data.nodes = malloc(data.count * sizeof *data.nodes);
    data.cFilePath = NULL;
    if (data.nodes) {

        data.nodes[0].hrs = 5; data.nodes[0].min = 23; data.nodes[0].sec = 54;
        data.nodes[1].hrs = 2; data.nodes[1].min = 58; data.nodes[1].sec = 12;
        data.nodes[2].hrs = 3; data.nodes[2].min = 4;  data.nodes[2].sec = 2;
        /* use data */

        free(data.nodes);
        data.nodes = NULL; /* optional */
        data.count = 0;
    }
    return 0;
}

РЕДАКТИРОВАТЬ: используется пример, приведенный в OP

0 голосов
/ 19 октября 2011

Вот как бы я это сделал.Если у меня совершенно не тот конец палки.Я не фанат нового ключевого слова struct, засоряющего мой код.

typedef struct 
 {
   int hrs;
   int min;
   int sec;
 } timebasedSpecificTimesIntervalNode;

 typedef struct 
 {
     timebasedSpecificTimesIntervalNode* nodes;
     int count;
     char *cFilePath;
 } timebasedSpecificTimesInterval;

int main (void)
{
  timebasedSpecificTimesIntervalNode nodeArray[3];  
  timebasedSpecificTimesInterval specificTimesInterval;

  //initialise the pointer
  specificTimesInterval.nodes = nodeArray;

  // you can now access the pointer as an array
  nodeArray[0].hrs = 3; //arbitrary value

}
0 голосов
/ 19 октября 2011

Если я не понимаю вопрос ... так же, как и любой другой массив:

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