Помимо очевидной проблемы с неправильным использованием scanf
, указанной в другом ответе, это также не соответствует ни одному стандарту C:
#include <stdio.h>
...
text = malloc(length+1)
, поскольку вы не включили stdlib.h
, где malloc
найдено, C90 будет считать, что функция malloc
имеет вид int malloc(int);
, что, конечно, бессмысленно.
А затем, когда вы попытаетесь присвоить int
(результат malloc) дляchar*
, у вас есть нарушение ограничения C90 6.3.16.1, правил простого присваивания.
Поэтому ваш код не может быть скомпилирован чисто, но компилятор должен выдать диагностическое сообщение.
Вы можете избежать этой ошибки, обновив стандарт до ISO C.