复习:
1、输出缓冲区:
程序输出的数据并没有立即写入到“文件”中,而是先存到了输出缓冲区中,当满足一定条件时写入到文件。
1、从输出切换到输入时 scanf
2、遇到换行符 \n
3、程序结束时
4、缓冲区满4k
5、手动刷新 fflush(stdout)
2、出入缓冲区:
在终端输入数据时,此时数据是由终端保管,当按下回车键时,数据才由终端写入程序的输入缓冲区scanf()函数再从输入缓冲区读取数据给变量。
1、当想要从输入缓冲区读取整型、浮点型数据时,而缓冲区中的数据是字符或符号,此时会读取失败,并且不会从缓冲区中拿走字符或符号,导致了接下来的数据都出问题。
解决:先判断scanf的返回值是否正确
scanf("%*[ ^\n ]");
scanf("%c");
2、当使用fgets()函数读取字符串时,如果输入的字符超过了size-1,缓冲区中会残留多出来的字符,这样也会影响接下来的数据的读取。
scanf("%*[ ^\n ]");
scanf("%c");
3、当先输入的整型或浮点型,然后紧接着输入字符或字符串时,前一次可能残留一个\n,会影响字符、字符串的输入。
输入字符时:
scanf("%c");
输入字符串:
scanf("