zoukankan      html  css  js  c++  java
  • 对scanf和printf的研究!!

    在做项目的时候,突然很纠结要不要清理。所以赶紧写一篇博客记一下!!

    1. scanf函数

    在代码中,如果碰到了两个挨着输入的情况,就会出现问题!!

    输入一个字符 r 就会出现一下情况!!

    第2句scanf不能正常接收字符。因为我们每敲一下”Enter”键,向键盘缓冲区发去一个“回车”( ),一个“换行”( ),在这里 被scanf()函数处理掉(执行拿数据),而 被scanf()函数保留。
    因此每次输入完字符或者字符串给输入缓冲区清流,是很有必要的。

    只要在两个scanf函数之间加一句

    stdin->_IO_read_ptr=stdin->_IO_read_end;

    即可解决stdin流堵住问题(加getchar() 也会起到相同的作用),格式不匹配导致的阻塞缓冲区的问题也可以解决!

    scanf 的返回值: 一共输入了几个数字、字符的个数和。

    2. printf函数。

    代码中出现一下问题,printf不会输出!

    此时输出为空。
    但是加上清理输出缓冲区fflush(stdout);即可!

    3.两者的相关性!!

    输入、输出缓冲区
    当程序输出数据时,数据没有直接到达屏幕,而存储在了缓冲区中(为了提高程序的运行效率),当满足一定的条件后才能显示出来:
    1、遇到' ';
    2、从输出状态切换到输入状态时(调用scanf,getchar,getch,gets);
    3、数据量达到4K(满了);
    4、刷新缓冲区,调用fflash(stdout);
    5、程序结束;

  • 相关阅读:
    Smobiler 仿知乎APP个人主页
    smobiler仿自如app筛选页面
    Smobiler 仿美柚APP个人主页
    谈谈网络协议 – 物理层
    谈谈网络协议 – 路由
    谈谈网络协议 – 基础知识
    Flutter(三):Flutter App 可行性分析
    Flutter(二):编写第一个Flutter App
    Flutter(一):MAC的Flutter安装指南
    Jetpack新成员,Paging3从吐槽到真香
  • 原文地址:https://www.cnblogs.com/fusangshu/p/10102799.html
Copyright © 2011-2022 走看看