Вы устанавливаете _temp
на buffer
, когда последний указывает на завершающую '\0'
строки.
Переместить строку:
const char* _temp = buffer;
сразу после строки:
buffer = (char *)malloc(i*sizeof(char));
так что _temp
указывает на начало буфера.
У вас есть другие проблемы:
Не используйте имя _temp
- имена с начальным подчеркиванием зарезервированы;
Вам нужно проверить, что вы не записываете в буфер больше, чем i
байтов;
Вы должны проверить на malloc()
возвращение NULL
;
Вам нужно проверить на getchar()
возвращение EOF
. Это будет означать, что вам нужно сохранить результат getchar()
в переменной типа int
, прежде чем присваивать ее *buffer
;
Как отметил в комментарии Майкл Мрозек, выражения в вашем цикле for
неверны.
... и, как точка стиля, sizeof(char)
всегда равен 1, поэтому умножение на него не нужно; и приведение результата malloc()
не является необходимым в C и считается нежелательным (в отличие от C ++, где это требуется).