dynamiczna alokacja scanf

Z jakiegokolwiek powodu drukowany jest następujący kod (null):

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

int main(void)
{
    char *foo; 
    scanf("%ms", &foo);
    printf("%s", foo);
    free(foo);
}

Próbuję przydzielić pamięć na łańcuch dynamicznie, ale jak powiedziałem wcześniej, mój program po prostu wysyła dane (null). Pracowałem nad tym, tworząc funkcję przy użyciu getche i realloc, ale wydaje się to prawie bezcelowe, ponieważ musiałem także zaprogramować, co by się stało, gdyby użytkownik wprowadził backspace, tab itp. Ale jak powiedziałem, to tylko praca wokół i wolałbym wiedzieć, dlaczego powyższy kod nie działa ...

Dodatkowe informacje:

Używam Pelles C IDE v7.00 i kompiluję ze standardem C11

questionAnswers(3)

yourAnswerToTheQuestion