【C语言】连续使用多个scanf函数时输入数据
一. 遇到的情况
在多次使用scanf函数时常常会出现下面的情况:
1.
运行下列代码:
(1)有关回车(Enter)
从键盘中输入:
按回车(Enter)后输入:
按回车(Enter)后运行结果为:
(2)有关空格
从键盘中输入(含空格):
按回车(Enter)后运行结果为:
2.
运行下列代码:
(1)有关回车(Enter)
从键盘中输入:
按回车(Enter)后运行结果为:
(2)有关空格
从键盘中输入(含空格):
按回车(Enter)后运行结果为:
很明显上面几种情况的运行结果与预期结果不符
二.原因
(1)有关回车
当用户在输入数据时按下回车键,scanf函数会将回车符作为输入字符之一,并将其吸收到缓冲区中。如果后续的scanf函数读取字符时遇到了回车符,它会将其作为输入字符之一,而不是将其作为输入结束语。
(2)有关空格
在后续的scanf函数需要读取字符时,scanf函数会把空格作为输入字符之一。
三.解决办法(以第一种情况为例)
1.加空格
可以抵消输入的回车或满足scanf函数使用要求。
运行结果:
2.数字后紧接字母
数字后紧接字母,不要空格也不要回车。因为数字和字母是能够被区分开来的。
从键盘中输入:
运行结果:
3.将需读取字母的scanf函数放到最前面
运行结果:
4.使用
使用scanf函数后使用。可以清除输入缓冲区中的回车符或清除空格。
运行结果:
5.使用函数
使用scanf函数后使用函数。可清除输入缓冲区,避免回车对后续读取字符的影响。(无法清除空格)
运行结果:
6.使用
使用scanf函数后加上。可以清除输入缓冲区中的回车符。(无法清除空格)
运行结果:
Comments0
Creator