Глупый, наверное, вопрос, но как проследить, чтобы strndup потом все освобождались?
Правильно ли следующее (в комментариях написано, как было до strndup):
quicksort(char **strings, int n)
{
int i = 1, last = 0;
char *s, *t;
//char s[MAXCHARSINLINE], t[MAXCHARSINLINE];
if (n <= 1) // Ничего не делать
return;
swap(strings, 0, rand() % n);
s = strndup(strings[0]+posofword, wordlen);
//strncpy(s, strings[0]+posofword, wordlen);
//s[wordlen] = '\0';
for (i = 1; i <= n; i++) { // Разделить
t = strndup(strings[i]+posofword, wordlen);
//strncpy(t, strings[i]+posofword, wordlen);
//t[wordlen] = '\0';
if (strcmp(t, s) < 0) {
swap(strings, ++last, i);
}
}
swap(strings, 0, last);
quicksort(strings, last); // Рекурсивно отсортировать
quicksort(strings+last+1, n-last-1); // каждую часть
free(s); s = NULL;
free(t); t = NULL;
}
Ответ на:
комментарий
от phoenix
Ответ на:
комментарий
от UVV
Ответ на:
комментарий
от phoenix
Ответ на:
комментарий
от UVV
Ответ на:
комментарий
от phoenix
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум qsort для строк (2005)
- Форум Программа из K&R вопросы по warnings, полученные от gcc (2015)
- Форум oop в «чистом» си (2005)
- Форум Не работает велосипед pwd на сях (2015)
- Форум Обещаный код с ошибкой __int_malloc (2004)
- Форум socket error (2009)
- Форум Работа с сокетами в C (2010)
- Форум Функция на питоне (2005)
- Форум Что-то конкурсов у нас давно не было... где моя K&R ! (2016)
- Форум Быдлокод не быдлокод? (2014)