scanf输入与getchar的比较
使用scanf输入时应注意的问题
1. scanf("%c%c%c",&c1,&c2,&c3); 在执行此函数时应该连续输入三个字符,中间不要有空格。如果有空格,就不对了, 如:a b c 第1个字符‘a’送给c1,第2个字符是空格符' ',送给c2,第3个字符'b'送给c3
提示:输入数值时,在两个数值之间需要插入空格(或其他分隔符),以使系统能区分两个数值
在连续输入字符时。在两个字符之间不要插入空格或其他分隔符(除非在scanf函数中的格式字符串中有普通字符,这时在输入数据时要在原位置插入这些字符),系统能区分两个字符
2. 在输入数值数据时,如输入空格、回车、Tab键或遇非法字符(不属于数值的字符),认为该数据结束。如:
scanf("%d%c%f",&a,&b,&c);
若输入1234e123o.26
第一个数据对应%d格式,在输入1234之后遇到字符'e',因此系统认为数值12345后没有数据了,第1个数据应到此结束,则把1234送给a,把'e'送给b。如果由于疏忽把1230.26错打成123o.26,由于123后面出现字母o,就认为数值数据到此结束,将123送给变量c,后面的几个字符没有被读入。
3.scanf("%[^\n]",&a);
表示读入一行字符串。
^表示"非",[^\n]表示读入换行字符就结束读入。
4. *在scanf中的用法和scanf的返回值的用法两点。
https://www.dotcpp.com/wp/786.html
使用getchar输入单个字符,而非一个字符串。
getchar函数,是C语言标准库中的函数,在头文件stdio中,可以接受用户输入的一个字符,回车结束,明文显示。声明和示例如下:
注意:第一行是我输入的,第二行是printf输出的!
gets(字符数组)
puts(字符数组)