У вас есть
char *array[size];
Это делает array
массивом указателей. В частности, array
- это массив size
указателей. Каждый элемент в массиве (array[0]
до array[size-1]
) имеет тип char *
.
Я думаю, это поможет, если вы поймете, как работает array
:
+-------+-------+-------+-------+
| [0] | [1] | [2] | [3] |
+-------+-------+-------+-------+
| | | |
| | | |
| | | |
v v v v
Каждое из полей выше представляет указатель, а стрелки указывают на то, куда они указывают. Хранилище для них еще не назначено, поэтому они просто «там» и никуда не годятся. Вы можете создать для них память (malloc()
и т. Д., В C, new[]
в C ++) или указать их в каком-либо существующем месте.
Вы говорите:
... вставь несколько строк. Если я снова назначу им что-то, они не заменяют предыдущее содержимое, а продолжают добавлять к предыдущему. Как правильно очистить / сбросить все его содержимое?
Непонятно, как вы вкладываете "струны в это". Вы имеете в виду, что храните строки в array[0]
.. array[size-1]
? Как? Вы присваиваете им буквальные строки? Что-то вроде:
array[0] = "String";
Если вы делаете это, то вы можете переназначить указатели, и строки не добавятся. Другими словами, если позже в вашей программе вы делаете:
array[0] = "Another string";
вы переназначаете указатель array[0]
, чтобы он указывал на "Another string"
, и, следовательно, вы не добавляете.
Короче говоря, нам нужно увидеть больше кода, и вам может понадобиться лучше понимать указатели и массивы.
Редактировать : На основании ваших изменений указатели myMainArr[i]
(для i=0
до i=3
), do переназначаются соответствующим элементам с myArrOne
myArrOne
(не опечатка!), В зависимости от содержимого action
. Таким образом, если вы напечатали их (например, printf("%s\n", myMainArr[0]);
), вы не должны видеть добавляемых строк. Кроме того, myMainArr
является локальным для вашей функции function
, поэтому он будет уничтожен, когда ваша функция вернется. (Между прочим, ваш выбор имен array
для массива и function
для функции затрудняет однозначность ответа на вопрос!)
Если у вас возникли проблемы, пожалуйста, отправьте complete , минимальный , скомпилированный код, который показывает проблему.