Scanf динамическое распределение

По какой-либо причине следующий код печатает (ноль):

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

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

Я пытаюсь динамически распределять память для строки, но, как я уже говорил ранее, моя программа просто выводит (ноль). Я работал над этим, создавая функции с использованием getche и realloc, но это кажется почти бессмысленным из-за того, что мне также пришлось программировать, что произойдет, если пользователь войдет в backspace, tab и т. Д. Но, как я уже сказал, это просто работа и я предпочел бы знать, почему вышеприведенный код не работает ...

Дополнительная информация:

Я использую Pelles C IDE v7.00 и компилирую со стандартом C11

Ответы на вопрос(3)

Ваш ответ на вопрос