Не советую scanf использовать, не очень это хорошая функция. Лучше преобразовать чем-нибудь вроде strtol, проверить допустимость диапазона и если все ОК, внести новый элемент.
Сам массив "резиновым" создать не получится: нужно сначала выделить память подо все элементы. Если нужен действительно "резиновый" массив, то следует завести что-нибудь вроде связанных списков.
Ну и как говорил
Армянское Радио, читать поэлементно.
Т.е. что-то вроде
int main(int argc, char **argv){
int i, L = argc - 1;
if(!L) return -1;
int arr = malloc(L*sizeof(int)); // в C11 можно и так: arr[L], но если L будет большим, получится "упс"
if(!arr) return -2;
for(i = 0; i < L; i++)
arr[i] = check_and_get(argv[i+1]); // а в этой функции производится преобразование строки в число и проверка
...
return 0;
}