我知道在获取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?
答案 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;