Функция Scanf и целые числа - PullRequest
       57

Функция Scanf и целые числа

0 голосов
/ 09 ноября 2018

Я знаю, что при получении символа нужно учитывать, что он также потребляет пробелы.

Это не относится к

scanf ("% d", & num)

Но в случае:

 case 2:
            printf("Please enter first number: \n");
            scanf("%d", &num1);
            printf("Please enter second number: \n");
            scanf("%d", &num2);

            break;

Если пользователь вводит:

444    5

первый scanf получает 444, а второй получает 5, даже те, которые они не нажимали, вводят. есть ли способ получить только один int и завершить сканирование, если пользователь нажимает клавишу Backspace?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Вы можете использовать

while ((getchar()) != '\n'); 

чтобы дождаться нажатия клавиши "ввод"

 case 2:
            printf("Please enter first number: \n");
            scanf("%d", &num1);
            while ((getchar()) != '\n');
            printf("Please enter second number: \n");
            scanf("%d", &num2);

        break;
0 голосов
/ 09 ноября 2018

за это вы могли бы

  • прочитать всю строку, используя fgets, например
  • sscanf строка только для 1 целого числа

как это:

char buffer[80];
fgets(buffer, 80, stdout);
if (sscanf(buffer,"%d",&value) == 1)
{
   // scan succeeded
}
...