Как вы можете читать цифры с клавиатуры до нажатия CTRL + D? - PullRequest
0 голосов
/ 24 мая 2019

Как видно из названия, мне нужно читать цифры, пока не нажата комбинация клавиш CTRL + D. Я думал о getchar (), но мне нужно отделить отрицательные числа от положительных, и я думаю, что это будет довольно сложно.

1 Ответ

0 голосов
/ 24 мая 2019

вы можете использовать scanf , чтобы попытаться прочитать число (здесь я полагаю int ), и getchar (или эквивалентный), чтобы обойти оба недопустимых символадля числа и для определения EOF:

#include <stdio.h>

int main()
{
  for (;;) {
    int v;

    if (scanf("%d", &v) == 1)
      printf("read %d\n", v);
    else
      // bypass invalid char
      if (getchar() == EOF)
        break;
  }

  puts("done");
}

Выполнение компиляции в конце:

pi@raspberrypi:/tmp $ gcc -pedantic -Wall -Wextra c.c
pi@raspberrypi:/tmp $ ./a.out
12 aze -23
read 12
read -23
   3 e
read 3
done
pi@raspberrypi:/tmp $ 

В поле raspberrypi я ввожу два последовательных control-d для указания EOF

Использование echo для создания EOF:

pi@raspberrypi:/tmp $ echo "123 aze -23 " | ./a.out
read 123
read -23
done
pi@raspberrypi:/tmp $ 

Когда есть недопустимый символ, который я выбрал для чтения только одного символа, также можно обойти остальныелиния, или прекратить читать цифры, это выбор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...