Devo acquisire una stringa in C da linea di comando, ma se uso la scanf su una stringa devo dichiarare un array di un numero di caratteri prefissato allocando memoria anche se in alcuni casi protrebbe non bastare o essere troppa.
char a[128];
scanf("%s", a);


Con scanf("%s", a) dove a è un puntatore a char ho notato che dopo questa istruzione il puntatore a si comporta come una stringa e dovrebbe usare la memoria allo stretto necessario.
char *a;
scanf("s", a);

Si può fare la scansione su un puntatore o ha degli inconvenienti ?(devo realizzare questo per un progetto universitario e devo stare attento agli sprechi di memoria).

La mia domanda cioè è: è possibile acquisire una stringa da linea di comando allocando precisamente la memoria necessaria ?