C语言scanf语句输入跳过造成死循环的解决办法

现象描述:在编写C语言程序时,需要使用scanf语句从键盘上输入一个整型的数时,当错误的输入了字符时,scanf语句就好像不会执行,但从键盘输入其他数字又无法获取。

问题分析:当定义scanf语句接收整型数值时,它就会跳过所有的非数字的字符,专接收数字。当输入了字符时,字符就会留在缓冲区,只要缓冲区又字符,scnaf就会去读,一读发现不是数字,就会跳过,只有当输入缓冲区没有字符了才等待你去输入,这个过程会反复的进行,造成死循环。

问题解决:可以在scanf语句后面加上getchar()这个函数,用来接收非数字字符,这样当输入非数字字符时,这个字符就被getchar()这个函数接收了,不会留在scanf的shur输入缓冲区,scnaf就不会去读它,就不会出现死循环。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章