Возможно ли использование ungetc() для получения длины стандартного ввода для выделения памяти?
Вот логика того, что я пытаюсь сделать;
- получить входной символ с помощью fgetc() в переменной с именем ch ,
- проверьте, не является ли ch EOF или равным '\n' ,
- увеличить переменную int с именем counter ,
- затем поместите переменную ch в стандартный ввод , используя ungetc()
- повторить процесс
После этого выделяем память с помощью counter. Опять же, получите char в stdin , используя fgetc() , и сохраните его в массиве.
Эта мысль работает только с одним входом char. Это код, который я написал для двух или более входов;
while ( ((entry = fgetc(stdin)) != EOF) && (entry != '\n'))
{
++counter;
ungetc(entry, stdin);
fprintf(stdout, "%c,%d ", entry, counter); //
} //;
Это вывод консоли, когда я ввожу qwert в качестве ввода;
q,2 q,3 q,4 q,5 q,6 q,7 q,8 q,9 q,10 q,11 q,12 q,13 q,14 q,15 q,16 q,17 q,18 q,19 q,20 q,21 q,22 q,23 q,24 q,25 q,26 q,27 q,28 q,29 q,30 q,31 q,32 q,33 q,34 q,35 q,36 q,37 q,38 q,39 q,40 q,41 q,42
После чтения первого символа он продолжает читать первый символ, никогда не получает второй или другие.
ОС: Windows 10 | MinGW gcc-9.1.0
Что я делаю не так? Это вообще возможно?