Scanf函数和整数

时间:2018-11-09 13:31:46

标签: c scanf

我知道在获取char时也应该意识到它会占用空格。

情况并非如此

  

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,第二个scanf为5,即使它们没有按Enter。 如果用户按退格键,是否有办法只获取一个int并结束scanf?

2 个答案:

答案 0 :(得分:4)

为此您可以

  • 例如,使用fgets阅读整行
  • sscanf仅1个整数的行

像这样:

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

答案 1 :(得分:3)

您可以使用

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

等待直到按下“ enter”键

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

        break;