Если массив объявлен как символьный массив, например char arr[]
, вы можете вызвать sizeof(arr)
, и вы получите размер массива. Но, если ему выделена какая-то куча памяти с помощью malloc или calloc, вы не можете получить размер массива, кроме вызова strlen()
, который дает только размер строки, а не место в памяти. Итак, либо объявите вашу строку как массив символов, либо сохраните размер созданной памяти (при динамическом создании) и обновляйте ее каждый раз, когда вы расширяете / уменьшаете свою память.
В вашем случае, я думаю, что это будетбудьте просты, если вы выделите какое-то хранилище для вашего вывода, итерируете ввод и вставляете данные в вывод. Таким образом, вы знаете, сколько данных выделить для вывода, и вам не нужно расширять их. Требуемое место для вашего вывода будет (1 + 2 + 3 + 4 + 5 +... strlen(input) times) + (strlen(input)-1)