• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

C语言的scanf、gets、getchar和缓存区的关系

yjjjj 2017-12-26 浏览量:1106
关于C语言的scanf ,gets, getchar和缓存区的关系与区别。
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • Scanf()函数读取数字,字符,字符串的时候,都会遗留一个换行符在缓冲区,但是它不读取换行符(输入数字时空白符都不读),因为不读所以遗留在了缓冲区。getchar()会读取缓冲区剩余的空白符,并且会遗留一个换行符。而gets()会读取缓冲区空白字符,它读了换行符,然后丢弃,所以它不会遗留换行符。可以认为使用它之后缓冲区是干净的。fgets和读区取文件有关,它也会读取缓冲区内容。它读区换行符后,保留它。它之后,缓冲区是干净的还是不干净的,哦,看参数和输入。综上,在scanf下面用其它三个函数时,要清空缓冲区,在getchar下面用除scanf的其它三个函数时(包括它自己拉。),要清空缓冲区,因为Scanf对它免疫。而gets之后用其它三个函数是安全的,而fgets之后是否清空视情况而定。
    • 发布于 2017-12-27
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了 :工业以太网接口,应用工业服务器,通讯设备。数据和信号传输功能。 回复

其他答案 数量:6
电子老工程师 回复了  :CY8C4124PVI-442:封装28-SSOP 不能替代,引脚定义不一样, 回复

电子老工程师 回复了  :https://www.arrow.com/en/products/b2b-ph-sm4-tbt-lf-sn/jst-manufacturing?utm_medium=aggregator®ion=europe&utm_source=findchips&utm_campaign=arrow_2021&utm_content=bnl_1 回复

  • getchar的缓存区只有一个字符,回车也算;scanf只会读取没有空格的字符串到缓存区,遇到空格自动切断字符串并完成一个scanf函数的功能;gets遇到回车自动切断字符串,空格不会。

    • 发布于2017-12-26
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :N65LVDS84AQDGGRQ1:属于SN65LVDS84AQ-Q1系列;车规级 SN65LVDS84AQDGGR:属于SN65LVDS84A系列;通用级 减少电磁干扰、吞吐量参数不一样,请查看附件截图 回复

  • 一个为读取到缓存区,一个为读取一个字符,另一个为读取一个字符串
    • 发布于2017-12-26
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :这个颗料件原厂颜色:自然色,没有问题。 回复

  • 其实还是读取字符的间隔符问题,具体看下这篇文章,讲的比较详细的http://blog.csdn.net/fighting_kangle/article/details/51933782
    • 发布于2017-12-28
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :7A-8.000MAAQ-T 厂牌:TXC 回复

  • scanf获取一个整数到n中  它完成了但是并没有结束  因为缓存区中并不干净  回车符'\n'仍然留在缓存区中,这样加入还有一个scanf函数要求输入就一个字符,那么此时将不需要从键盘上面输入,会自动将回车符给这个scanf函数

    • 发布于2017-12-28
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :https://atta.szlcsc.com/upload/public/pdf/source/20200529/C571447_B18834E6C956A26EE838A3EBA5D00210.pdf 回复

相关问题

问题达人换一批

C语言的scanf、gets、getchar和缓存区的关系