C语言自学完备手册(22)——输入输出

版权声明: https://blog.csdn.net/lfdfhl/article/details/82897916

自定义View系列教程00–推翻自己和过往,重学自定义View
自定义View系列教程01–常用工具介绍
自定义View系列教程02–onMeasure源码详尽分析
自定义View系列教程03–onLayout源码详尽分析
自定义View系列教程04–Draw源码分析及其实践
自定义View系列教程05–示例分析
自定义View系列教程06–详解View的Touch事件处理
自定义View系列教程07–详解ViewGroup分发Touch事件
自定义View系列教程08–滑动冲突的产生及其处理


探索Android软键盘的疑难杂症
深入探讨Android异步精髓Handler
详解Android主流框架不可或缺的基石
站在源码的肩膀上全解Scroller工作机制


Android多分辨率适配框架(1)— 核心基础
Android多分辨率适配框架(2)— 原理剖析
Android多分辨率适配框架(3)— 使用指南


讲给Android程序员看的前端系列教程(图文版)
讲给Android程序员看的前端系列教程(视频版)
Android程序员C语言自学完备手册


版权声明


输入输出函数概述

之前我们学习了利用函数putchar( )实现对于单个字符的输出。既然有输出那么就有与之对应的输入函数即getchar( ),利用该函数可以实现对于单个字符的输入。


EOF概述

在了解了输入与输出函数之后,我们来考虑一种应用场景:在控制台显示用户输入的字符。换言之,需要将标准输入的数据复制到标准输出。那么,有个问题——怎么样判断用户输入结束呢?这里就要用到EOF了。
EOF是End Of File的缩写,它是一个对象式宏;在<stdio.h>头文件中EOF被定义为负数(通常为-1,具体值有编译器和运行环境决定)。当getchar( )函数读到数据末尾或者发生错误时返回EOF。代码如下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int ch;
    while((ch=getchar())!=EOF){
        putchar(ch);
    }
    return 0;
}

在该示例中核心代码就是一个while循环,将输入数据不断地输出显示,直到数据的末尾(即读到EOF为止)。看到这些代码,熟悉Java的小伙伴或许猛地一下就想到了Java当中的IO流操作:

public static void testCopy1() throws IOException {
		 InputStreamReader isr=new InputStreamReader(new FileInputStream("e:\\test.txt"), "gbk");
		 OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("e:\\copy.txt"), "gbk");
		 
		 int data=0;
		 while((data=isr.read())!=-1) {
			 osw.write(data);
		 }
		 isr.close();
		 osw.close();
	}

核心部分太相似了,如遇故人。只不过在Java中明确使用了-1表示读到数据末尾,在C中采用的是EOF罢了。


输入输出小结

C语言的输入输出一般会将读入的字符以及待输出的字符暂时保存在缓存中,当达到下列条件时进行实际的输入输出操作:

  • 第一种:缓存已满;该方式亦称为全缓冲
  • 第二种:输入换行符;该方式亦称为行缓冲
  • 第三种:立即输出;该方式亦称为无缓冲

猜你喜欢

转载自blog.csdn.net/lfdfhl/article/details/82897916