Решение, которое могло бы соответствовать тому, что запрашивал OP, было бы кодом ниже.Решение считывает неопределенное количество целочисленных значений и сохраняет их в arr
.чтобы разорвать входной цикл / конец, просто введите нецелое значение.Это может быть дополнительно указано для поиска конкретного ввода и т. Д.
int c = 0;
int *arr = NULL;
int *extArr = NULL;
int i = 0;
for (i = 0; scanf("%d", &c) == 1; i++)
{
extArr = (int*)realloc(arr, (i+1) * sizeof(int));
arr = extArr;
arr[i] = c;
}
free(arr);
Я бы, однако, лично согласился с сочетанием предоставленного мной решения и ответа armitus (если я не могу использовать getline
или аналогичный)поскольку перераспределение памяти для каждого значения int кажется мне излишним.
Редактировать Поскольку возник некоторый вопрос о коде, который я предоставил, и о том, как наилучшим образом использовать его для выполнения вопроса ОП.Codenippet должен был продемонстрировать, как можно создать свою собственную функцию в стиле scanf для неопределенного числа целочисленных входов, считывающих один полный массив за один раз (в этом случае free()
должен быть опущен, пока один не будет сделан с массивом (очевидно,).