Как создать и использовать динамический массив в Си ?
Просто я заранее не знаю сколько значений будет в нем, для этого вроде и используются динамические?
Увеличивать размер лучше сразу на несколько элементов (CHUNK_SIZE), чтоб не заниматься этим для каждого нового элемента. Часто встречающийся подход, когда размер массива увеличивают в двое.
andrey_levushkin, CHUNK_SIZE - это количество элементов на которое требуется увеличить массив.
Правильная запись realloc будет такой:
if (i >= N)
{
arr = realloc(arr, sizeof(int)*(N + CHUNK_SIZE));
N += CHUNK_SIZE;
}
В malloc и realloc - размер выделяемой памяти указывается в байтах, поэтому всегда в этих вызовах нужно из количества элементов переводить в байты умножением количества элементов на размер элемента. https://en.cppreference.com/w/c/memory
res2001, ок. А как можно преобразовать строку в массив?
Например
Получаем с клавиатуры
"2 10 -7 17 25"
Enter
А имеем в итоге массив int array[5]
И значения элементов соответственны тем, что получили на вводе