Возможно ли использование 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

Что я делаю не так? Это вообще возможно?

0 ответов

Другие вопросы по тегам