用scanf()输入数据时如何分割多个输入的数据:
1)空格。TAB键或回车(假设scanf("%d%f",&a,&b);%d%f之间没有空格,此时我们可以用 空格作为数据结束)
2)达到输入位宽(假如我们指定了输入数据的位宽,当读到位宽后系统就认为输入数据结束)
3)遇到非法字符时。
遇到以上情况都认为一个数据输入结束。
例题1:
#include<stdio.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
printf("a=%d,b=%d\n",a,b);
}
问题:当要求程序输出结果为a=12,b=34时,用户该如何输入?
用户可输入12空格34回车
12 34
a=12,b=34
--------------------------------
Process exited with return value 0
Press any key to continue . . .
同理也可输入12回车34回车
12
34
a=12,b=34
--------------------------------
Process exited with return value 0
Press any key to continue . . .
例题2:
#include<stdio.h>
int main()
{
int a,b;
scanf(":2d %2d",&a,&b);
printf("a=%d,b=%d\n",a,b);
}
输入1234回车
得a=12,b=34
运行如下;
1234
a=12,b=34
--------------------------------
Process exited with return value 0
Press any key to continue . . .
若输入123456回车,得a=12,b=34
运行如下:
123456
a=12,b=34
--------------------------------
Process exited with return value 0
Press any key to continue . . .
若输入12空格3a回车
得a=12,b=3 因为a是非法字符,程序取3将a舍去
运行如下:
12 3a
a=12,b=3
--------------------------------
Process exited with return value 0
Press any key to continue . . .