Usa getline.
ssize_t getline(char ** restrict linep, size_t * restrict linecapp, FILE * restrict stream);
Te pongo el código que te vendría bien:
char *s = NULL;
size_t size=0;
printf("Introducir el valor:\t");
getline(&s, &size, stdin); //Tu string recogido por teclado se guarda en s.
//Aquí haces lo necesario con s
free(s); //Liberamos el malloc hecho por getline
s = NULL; //Por si quieres volver a usarlo.
Si vas a usar varias veces getline, repite el free y la asignación a NULL por cada vez que la emples.
No uses scanf, es una basura.