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 ?
|