1.scanf()的返回值
scanf函数是有返回值的,接受一个变量返回1。
如:c=scanf("%d%d",&a,&b);
若输入的全是整数,则c为2;
若全是字符,则c为0;
因为scanf在占位符存在的情况下,只接受符合占位符的数据。
2.scanf的结束
如果不是%c,则以空格,回车,tab键结束,或非法字符结束;
当为%c时,以回车结束,会把回车传值给变量,可能会出现问题。
不让变量接收回车的方法:
(1)
getchar();
用getchar()直接吸收掉回车;
注意:因为不是char i;i=getchar();光是getchar();所以回车并没有被变量接收,所以我们常说用getchar()函数吸收回车;
(2)已知字符长度;
scanf("%2c");
(3)scanf("%[^\n]",str);
格式控制符的基本格式为:%[scanfset]
scanfset 有两种形式:一种是以非 “^” 字符开头的 scanset , 表示在读入字符串时将匹配所有在 scanfset 中出现的字符,遇到非scanfset 中的字符时输入就结束;另外一种形式是以 “^” 字符开头的scanfset ,表示在读入字符串时将匹配所有不在scanfset 中出现的字符,遇到scanfset 中的字符输入就结束。
(3)scanf("\n%c",str);
可以在%前面加回车,但要加在双引号中。
此方法可以活学活用,如:要输入n组长度未知的数。
n直接用scanf();输入,并用for循环接收每组数,
用:
scanf("%d%c",&a[i][j],&c);//其中c为已经定义的字符变量
if(c=='\n')
break;