zoukankan      html  css  js  c++  java
  • 字符输入/输出和输入确认

    缓冲区

    缓冲分为两种:

    1. 完全缓冲:缓冲区满时被清空(内容发往目的地)
    2. 行缓冲:遇到一个换行字符时将被清空缓冲区

    终止键盘输入

    文件、流和键盘输入

    低级I/O是使用宿主操作系统的基本工具来处理文件,由于系统的差异,所以无法建立一个通用的低级I/O标准库。因此C采用的是标准I/O包,级别更高,系统之间的差异由特定的C实现来处理,相当于提供了一个标准的接口

    从概念上讲,C程序处理的是一个流而不是直接处理文件。

    流(stream)是一个理想化的数据流,实际的输入或输出映射到这个数据流

    C对待输入和输出设备与其对待存储设备上的普通文件相同,键盘的输入由一个被称为stdin的流表示,到屏幕上的输出由stdout流表示

    文件结尾

    检测文件结尾的两种方式:

    1. 在文件中放置一个特殊字符来标志结尾
    2. 让操作系统存储文件的大小信息

    C语言统一处理方法:让getchar函数在到达文件末尾时返回一个特殊值EOF,而不管操作系统如何检测文件结尾的

    重定向和文件

    令程序和文件一同工作的方式:

    1. 明确使用打开文件、关闭文件、读文件、写文件等专用函数
    2. 使用一个设计用于与键盘和屏幕共同工作的程序,但使用不同通道重定向输入输出,即将stdin流重新分配至文件

    输入重定向

    <是Unix的重定向运算符,将文件和stdin流关联起来,把文件内容引导至程序,程序本身不关心输入是来自文件还是键盘

    输出重定向

    >将stdout从显示设备重定向于文件,如果文件已经存在,通常会删除文件然后用新文件代替之

    组合重定向

    注意:

    1. 重定向运算符的顺序无关紧要
    2. 不要对同一命令的输入输出使用相同的文件名
    3. 输入输出的文件只能是一个
    4. 只能用于一个可执行程序与另一个数据文件的连接
    5. 空格不是必须的

    创建一个更友好的用户界面

    混合输入数字和字符

    getchar和scanf不能很好的混合,因为getchar读取每个字符,而scanf读取数字时则会跳过空格、制表符和换行符

    输入确认

    当scanf输入失败时,就会将错误的输入留在输入队列中,此时可以用getchar来逐个字符读取输入

    一个经典的输入确认例子:

    int get_int(void){
    	int input;
    	char ch;
    	while(scanf("%d",&input)!=1){//如果输入不成功,则进入循环
    		while((ch=getchar())!='
    '){//getchar逐个读取输入的字符
    			putchar(ch);//剔除错误输入
    		}
    	}
      return input;
    }
    
  • 相关阅读:
    沉淀再出发:在python3中导入自定义的包
    沉淀再出发:java中的equals()辨析
    沉淀再出发:web服务器和应用服务器之间的区别和联系
    沉淀再出发:jetty的架构和本质
    沉淀再出发:dubbo的基本原理和应用实例
    沉淀再出发:OpenStack初探
    沉淀再出发:Spring的架构理解
    沉淀再出发:关于IntelliJ IDEA使用的一些总结
    沉淀再出发:spring boot的理解
    沉淀再出发:Bean,JavaBean,POJO,VO,PO,EJB等名词的异同
  • 原文地址:https://www.cnblogs.com/xkf97/p/12461945.html
Copyright © 2011-2022 走看看