Ciao,
in effetti il problema non mi sembrava banale (probabilmente per qualcuno lo è...)
Ti posto una possibile soluzione, ampiamente commentata. Penso però che si possa fare di meglio! Quindi forse ti conviene aspettare risposte da parte di utenti più esperti, però intanto puoi dare un'occhiata a queste poche righe.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
/* funzione che "sposta" la stringa in avanti di una
posizione e aggiune un carattere in testa */
void shiftAndAdd(char * stringa, char c)
{
int size = strlen(stringa); /* lunghezza della stringa */
char * nuova = (char *) malloc(size + sizeof(char)); /* la nuova stringa: la dimensione e' quella della vecchia piu' la dimensione di un char */
strcpy(nuova+sizeof(char), stringa); /* copio la vecchia stringa piu' avanti dentro alla nuova: l'offset e' pari alla dimensione di un char */
nuova[0] = c; /* aggiungo il carattere in testa */
strcpy(stringa, nuova); /* rimetto tutto dentro la vecchia stringa */
}
int main()
{
char stringa[100];
char c;
while(1)
{
printf("Inserisci una stringa >\t");
c = _getch(); /* legge un carattere senza attendere la pressione di Invio */
if(c==13) break; /* premuto Invio */
else putchar(c); /* stampo il carattere sullo schermo */
scanf("%s", stringa); /* leggo il resto della stringa */
shiftAndAdd(stringa, c); /* aggiungo il carattere in testa */
printf("Hai inserito \"%s\".\n", stringa);
}
printf("\nInserimento terminato.\n");
return 0;
}