Non puoi ridimensionare un array, perkè un array è un oggetto statico. Al suo posto puoi usare un puntatore, e poi puoi riallocarlo con la funzione realloc:

void *realloc(void *ptr, size_t size);

ovvero, se prima allochi dinamicamente memoria per un puntatore a interi, ptr, e poi vuoi cambiare la dimensione della memoria allocata, basta invocare

ptr = realloc(ptr, 100 * sizeof(int));

se per esempio vuoi che la nuova dimensione sia 100; i vecchi elementi puntati da ptr vengono automaticamente ricopiati nella nuova porzione di memoria.