输出缓冲区:
当使用printf、puts、putchar等函数显示数据时,并不会直接显示在屏幕上,而是先放入的输出缓冲区中(提高程序的运行效率),当满足一些条件时才会显示在屏幕上:
1、遇到\n
2、从输出转换到输入状态
3、程序结束
4、当缓冲区满4k
5、手动刷新 fflush(stdout);
输入缓冲区:
在终端中输入的数据会先存储到在输入缓冲区中,然后再根据占位解析成对应的数据,如果前一次输入的数据有残留的垃圾,会影响后续数据的输入
1、输入字符是前一次的输入会残留一个空格或‘\n’,解决方法在%c前面加一个空格
2、如果输入时有若干个垃圾数据,会影响后续所有数据的输出
(1)使用正则表达式,注意:必需确定有垃圾数据时在使用
scanf("%*[^\n]");//*从缓冲区中获取数据,但不存储到变量中
scanf("%*c");//清理缓冲区(两句一起使用)
(2)设置缓冲区中的位置指针
stdin->_IO_read_ptr 开始位置
stdin->_IO_read_end 结束位置
stdin->_IO_read_ptr = stdin->_IO_read_end;//清理缓冲区
代码编译时的常见错误:
1、undefined reference to `main’,main函数拼写错误。
2、程序中有游离的‘\357’,使用了中文字符。
3、expected declaration or statement at end of input,大括号不匹配。
4、出现异常数据,变量未初始化、数据溢出、占位符错误。
5、死循环使用Ctrl+c结束。