esiste l'allocazione dinamica con i puntatori
tramite le funzioni malloc e calloc crei un array ma devi sapere di quanto allocare

esempio :


codice:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
 char *array ;//un puntatore al char 
 int caratteri,i;

 printf("quanti caratteri vuoi inserire ?  ");
 scanf("%d",&caratteri);
 fflush(stdin);
 array=(char*)malloc(sizeof(char)*caratteri);
 printf("inserisci la stringa composta da %d caratteri -->   ",caratteri);
 scanf("%s",array);
 for(i=0;i<5;i++)
     puts(array);
 free(array);    
  system("PAUSE");	
  return 0;
}