C语言中在使用scanf函数输入格式时,在输入完%d型的数据后按下回车键,这时回车符还会遗留在输入缓冲区中吗?

1)scanf函数的特点:

是阻塞式的函数,在函数执行后,会等待用户的输入,如果用户不输入任何内容,它会一直等待

2)scanf函数的作用:

从键盘接收用户输入的内容,保存到指定的变量中

scanf函数中的格式控制符和输入项地址列表都不能省略

 scanf("格式控制符",输入项的地址列表);

规定数据输入的格式,由格式控制符合普通字符组成,格式控制符合百分号(%)一起使用,用来说明输入数据的数据类型(格式字符)。

需要接收数据的变量地址,这些输入项与格式控制字符串在类型和数量上要对应,当有多个输入项时,各个地址名之间以逗号“,”分隔。输入格式和变量类型要保持一致。

在C语言中,一个变量的地址可以通过地址运算符&得到。

2、scanf函数中格式控制符介绍


基本用法一:获取输入单个整型或者实型数据

当格式控制符要求输入整型数据时,如果输入的是小数,只能保存该小数的整数部分

//从键盘上接收一个人得年龄,然后打印出来 //2、给一个提示,让用户输入一个年龄 //把用户输入的值,放到age变量中 //3、打印用户输入的年龄

要求输入实数时,如果输入其它类型数据,则无法输出

在scanf函数中,可以控制域宽,但不能控制小数点后的位数

//接收用户输入的值保存到score中

1、scanf使用注意事项

1)如果在输入时,输入了多个空格、回车、Tab都会被系统忽略的

2)如果要获取的内容是多个整数,中间输入量多个空格、回车、Tab都会被系统忽略


3)非法的格式输入,得不到想要的结果

4)当整型和字符型数据混合输入时,要避免“空格”添麻烦

为防止混合输入时空格造成的错误,可以通过添加普通的分隔符解决

5)scanf函数当遇到回车的时候,会结束执行

scanf函数的修饰符有:数据读入宽度(域宽、)*和长度

1)域宽:指定输入数据的宽度

2)*:跳过相应数据不作处理——%*d忽略一个数字,%c忽略一个字符 3)1或h:读入长整型、双精度或短整型数据

4)关于“\n”的使用问题:尽量不要使用,如果不小心使用,则可通过下面两种方法解决

a.输入值后,随便输入一个内容

如果输入缓冲区的内容不为空,scanf会一直从缓冲区中获取,而不要求再次输入


}

 在用c语言编写输入语句的时候常用到scanf函数,初学者在刚用scanf函数输入时,经常会遇到各种各样的输入错误,最重要的是一定要记住scanf函数的输入格式,scanf函数里包含了哪些东西,输入的时候就必须有哪些东西,比如:scanf("%c%c%c"),那么输入的时候就必须连续输入3个字符,中间不能有任何空格逗号或者回车符等分开,而如果是scanf("%c,%c,%c"),那么输入3个字符的时候中间就必须用一个逗号分隔。

       用%d方式输入整数时,输入一串数字然后按回车符,输入就完成了。而用%c方式输入字符时,就稍微复杂一点。一般来说用%c输入字符时,当输完以后,都习惯按一下回车,这时回车符就成了一个问题。

/*即变量a中存储的字符将是"s",而不是回车符*/

当输入完整数或字符时,后面还需要输入字符时,为了避免输入的字符变成回车符,可以在输入字符前多加一条scanf语句来吃掉前面的回车符。此时用来吃掉回车符的scanf输入可以用%c方式,也可以用%d方式。当用%c方式来吃掉回车符时,回车符被读进了char类型变量中,当用%d方式来吃掉回车符时,回车符并没有被送进int类型变量中,而是在异常的字符输入后,被自动清除了。

}

我要回帖

更多关于 scanf函数输入格式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信