#c
#c
Вопрос:
Итак, у меня есть char **args
, но я хочу объединить все строки в одну char *newArgs
без использования string.h
.
Кто-нибудь знает хороший способ сделать это?
Комментарии:
1. Вы знаете, сколько существует аргументов, или есть какой-то другой способ завершения?
2. Я могу выяснить, сколько их существует. Я также знаю, что каждая отдельная строка завершается нулем
3. Вы можете сначала решить проблему с помощью
string.h
функций, а затем реализовать свои собственные версии замены этих функций.
Ответ №1:
На самом деле это один из немногих случаев, когда игнорирование стандартной реализации (string.h) и создание собственной функции объединения дает вам лучшие результаты. Смотрите Фантастическую статью Джоэла, в которой обсуждается эта тема.
Но вернемся к вашему вопросу: вам нужно выполнить два прохода по строкам args
. На первом проходе вы суммируете длины строк (не забудьте нулевой ограничитель!). Теперь, когда у вас есть длина результирующей строки, для которой вы можете выделить буфер newArgs
. На другом проходе вы копируете содержимое из args
в newArgs
.