The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
calloc, !*! Fagot, 27-Сен-06, 14:37  [смотреть все]
Здравствуйте.

есть структра
struct _cfg {
  char var[256];
  char val[256];
  struct _cfg *next;
} *cfg;

циклом перебираю файл. из каждой строчки заносятся (должны заносится) данные в массив.
я думаю надо делать через calloc, для инициализации массива, или я что-то неправильно думаю?
Книгу по этой теме заштудировал, но не черта не понял, хочется так сказать из первых рук :-)
Заранее спасибо!

  • calloc, !*! Fagot, 15:29 , 27-Сен-06 (1)
    Немного разобрался.
    Делаю вот так:

    struct _cfg {
      char *var;
      char *val;
      struct _cfg *next;
    } *cfg;

    struct _cfg *ptr;
    while(...)
    {
            for(ptr = cfg; ptr != NULL; ptr = ptr->next);

            ptr = calloc(1, sizeof(struct _cfg));
            ptr->var = malloc(strlen(var));
            ptr->val = malloc(strlen(val));
            strcpy(ptr->var, var);
            strcpy(ptr->val, val);
    }

    но это не конченая штука. Не работает так как надо.
    Надо что-то добавить, чтобы всё заносилось в cfg.
    А то ента штука всё на первом уровне только изменяет (next не трогает).

    • calloc, !*! DeepEye, 17:57 , 27-Сен-06 (2)
      • calloc, !*! Fagot, 18:38 , 27-Сен-06 (3)
        Спасибо работает. Я тут сам вариант придумал, но ваша версия покороче будет!
        Вот мой вариант:

        struct _cfg *cfg, *ptr;
        if(cfg == NULL)
        {
          cfg = calloc(1, sizeof(struct config));
          cfg->var = malloc(strlen(var));
          cfg->val = malloc(strlen(val));
          strcpy(cfg->var, var);
          strcpy(cfg->val, val);
        }
        else
        {
          ptr = calloc(1, sizeof(struct config));
          ptr->next = calloc(1, sizeof(struct config));
          ptr->var = malloc(strlen(var));
          ptr->val = malloc(strlen(val));
          strcpy(ptr->var, var);
          strcpy(ptr->val, val);
          ptr->next = cfg;
          cfg = ptr;
        }

  • calloc, !*! Fagot, 10:31 , 30-Сен-06 (4)
    Вот что ещё спросить хочю, сформировал я эту цепочку,
    а как в ней изменить какое-нибудь значение?
    Напрмер cfg->next->next->...->val ?




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру