为什么用scanf输字符串,用键盘打完字符串后按回车,scanf不会读取回车这个字符。但是当回车这个字符在键盘输入缓冲区的时候,遇到scanf(“%s”,&a),scanf又能读取回车这个字符了?那到底scanf能不能读取回车这个字符呢。
为什么用scanf输字符串,用键盘打完字符串后按回车,scanf不会读取回车这个字符。但是当回车这个字符在键盘输入缓冲区的时候,遇到scanf(“%s”,&a),scanf又能读取回车这个字符了?那到底scanf能不能读取回车这个字符呢。
scanf 是能读取换行符的
为什么用scanf输字符串,用键盘打完字符串后按回车,scanf不会读取回车这个字符。??
因为 scanf 读取输入的时候,要设定结束条件,在遇到空白字符(空格,换行符)等,读取结束,这时换行符是作为结束条件的,scanf 的特性是不读取这个换行符。
当 换行符在 输入缓冲的时候,就可以读取换行符。
所以,并不是在什么条件下读不读取换行符,而是换行符是什么作用。
换个函数 gets() 已换行符作为结束,但是可以读取最后的换行符
你可以试试
当然是可以的,只不过默认情况下
scanf
会以换行作为输入的边界,当读取到换行符的时候就停止读取了。而当开始读取时并且缓冲区中只有换行符时,
scanf
不会输出这个空字符串,而仍然是等待输入,所有行首会读到这个换行符。