Если количество цифр фиксировано, то просто перечислите в формате scanf сразу их все.
Если количество цифр может меняться, то ...
Вводить как строку и потом парсить ее с помощью strtol, кода будет, конечно, больше, чем сейчас.
Строку вводить в какой-то достаточно большой буфер длинной в 1 или 4 кб.
При превышении буфера можно выдавать ошибку.
Или ввод оформить в цикл, на случай, если буфер заполнится, а Enter пользователь еще не нажал. Выход из цикла по нахождению символа '/n' в буфере. В таком случае буфер можно делать меньше. Но тут возникает дополнительная проблема с неоконченным вводом, т.е. пользователь вводит число 123456 и допустим 123 прилетело в конец прошлого буфера, а 456 в начало следующего. Это надо будет решать в коде.
Есть проблема с фиксированным размером массива.
Если нужен произвольный размер входных данных, то можно, предварительно выделять массив какого-нибудь начального размера, если в ходе парсинга размер массива превысится, то сделать realloc увеличив размер массива в 2 раза. Ну и надо отдельно хранить количество реально заполненных элементов массива.
А вообще, массив может оказаться не нужен, если взглянуть на задачу целиком.