Есть ли способ выделить память под указатель на char, ровно столько, сколько нужно (т.е. определить сколько ввёл пользователь в консоли символов, выделить память и записать в неё то, что ввёл пользователь). Я знаком лишь с другим методом: выделяю много памяти, считываю в неё, а потом (чтобы память не засирать) применяю string=realloc(string, strlen(string)), т.е. перевыделяю память, новая память не будет содержать пустого хвоста. Но все эти перевыделения - это действия, программа копирует строку в новое место, и стирает старое. Этот метод не выгоден по ресурсам. (это конечно смешые объёмы, но всё-же, хочется правильно писать проги).
Я тут попробывал вот что написать
Код: Выделить всё
void main()
{
char *string;
int i=0;
while (getchar()!='\n') i++;
string=malloc((i+1)*sizeof(char));
fseek(stdin,0,SEEK_SET);
fscanf(stdin, "%s", string);
printf("%s", string);
getch();
}
однако считать с потока ввода символы, введённые ранее не удаётся(