对于scanf函数,大家是既爱又恨。
爱的是,有了它,程序就可以接收不同的输入,对输入进行处理而得到不同的输出结果。恨的是,输入的规则比较多,经常会出现输入后得不到想要的输入效果。
对于字符型数据的输入,输入格式要注意以下几点:
-
格式字符串中一般不要有其他的非格式字符,如
scanf("Pleaseinputachar:\t%c\n",&ch);// 双引号内的"Please.......",以及\t、\n等都不要出现scanf("%c",&ch); // 只包含格式字符就好了
-
输入多个字符时直接连续用%c,不需要加入分隔符,同样输入也是连续输入且不能使用任何其他字符(如空格,回车等)来分隔。空格、制表以及回车都将被视作有效的字符输入。
scanf("%c%c%c",&ch,&ch2,&ch3); // 只包含格式字符就好了
当字符和其他数值类数据混合输入时,字符要放在前面,数值放在后面输入。这样可以保证开始已经有效的输入了字符,而后面的数值也可以正确的输入
但如果一定要字符在数值之后输入,就需要要求输入者严格按照指定的个时输入数据了。稍有不慎,就不能得到正确的输入。
如需要输入一个整数i和一个字符ch。scanf("%d%c",&i,&ch); 要求在整数后面不能有任何分隔,如回车,要立即跟随要输入的字符。如果不小心输入了回车,则回车符将被输入到字符变量ch中。