как объединить неопределенное количество строк без использования string.h

#c

#c

Вопрос:

Итак, у меня есть char **args , но я хочу объединить все строки в одну char *newArgs без использования string.h .

Кто-нибудь знает хороший способ сделать это?

Комментарии:

1. Вы знаете, сколько существует аргументов, или есть какой-то другой способ завершения?

2. Я могу выяснить, сколько их существует. Я также знаю, что каждая отдельная строка завершается нулем

3. Вы можете сначала решить проблему с помощью string.h функций, а затем реализовать свои собственные версии замены этих функций.

Ответ №1:

На самом деле это один из немногих случаев, когда игнорирование стандартной реализации (string.h) и создание собственной функции объединения дает вам лучшие результаты. Смотрите Фантастическую статью Джоэла, в которой обсуждается эта тема.

Но вернемся к вашему вопросу: вам нужно выполнить два прохода по строкам args . На первом проходе вы суммируете длины строк (не забудьте нулевой ограничитель!). Теперь, когда у вас есть длина результирующей строки, для которой вы можете выделить буфер newArgs . На другом проходе вы копируете содержимое из args в newArgs .