LINUX.ORG.RU

Работа с массивами строк в С

 


0

1

Выделяю память в main

char** result = (char**)malloc(2*sizeof(char*));

Передаю как параметр в функцию

int success = match_regex(& r, (char*)buf, result);

В функции записываю в массив данные

sprintf (results[mIdx],«%.*s», (finish - start), to_match + start );

Проверяю, что данные есть

puts(results[mIdx]);

Теперь в main пробую вывести данные из results

printf(«Temperature %s Humidity %s », result[0], result[1]);

И получаю Segmentation fault. В чем проблема? Вроде бы память выделил у себя, передал по указателю, заполнил, но доступа нет.


Научись оформлять сообщения...

char** result = (char**)malloc(2*sizeof(char*));

Ты выделил место под два указателя.

Нужно выделить место под сами буферы:

char **buffers = (char **) malloc(2 * sizeof(uintptr_t));
buffers[0] = (char *) malloc(BUFFER_SIZE);
buffers[1] = (char *) malloc(BUFFER_SIZE);

или сразу место под массив указателей и буферы:

char **buffers = (char **) malloc(2 * sizeof(uintptr_t) + 2 * BUFFER_SIZE);
buffers[0] = (char *) &buffers[3];
buffers[1] = buffers[0] + BUFFER_SIZE;

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.