В системе POSIX вы можете использовать модификатор m
для автоматического выделения памяти для строки
char *input_string;
scanf("%ms", &input_string);
Обратите внимание, что во избежание утечки памяти, вам в конечном итоге потребуется вызвать free(input_string);
, чтобы освободить выделенную память.