c语言笔记——对流的理解
来源:互联网 发布:linux jdk1.8安装教程 编辑:程序博客网 时间:2024/06/06 07:44
问题的开始是因为在编程的时候在输入数据的时候出现的一点问题,当时的问题大致可以总结为下面的代码:
int a=0;char b[10];scanf("%d",&a);gets_s(b);printf("%d%s",a,b);
当时的效果就像是gets_s这个函数被跳过去了一样没有输出结果,没有任何的反应显得十分的诡异,但是调试的时候发现其实并不是被跳过去了,而是gets_这个函数直接获得了一个\0,结束了输入。然后就是查资料了,然后就知道了有输入缓冲区这个东西(其实我原来也知道至少没有深入了解不知道有什么用,看样子要被坑了才会有动力),然后有了解的流这个概念,以及各个输入函数之间的区别什么的。
先说一说流这个概念,这是一个重要而又比较抽象的概念,不仅仅在c语言里有在很多的地方都会用到。K&R 在 C Programming Language 书中提到流是这样定义的:
流 (stream) 是与磁盘或其它外围设备关联的数据的源或目的地。
流可以理解为是程序和外界进行数据交流的一种抽象,程序通过流对外界进行数据的输入和输出。因为c语言把文件看作是一串有序的字符序列,然后读取的时候就是一个字符一个字符的有序的‘流’过去,是不是一个非常形象的比喻啊。就像日常生活种的水一样,水的流动有它最基本的单位那就是水分子。而这里提到的流最小的单位一般是字节流(二进制流)和字符流(文本流),因为字节是最终储存在计算机中的基本单位,而字符是最终展现给人类看的基本单位。
那么为什么需要有这样一种概念的提出呢?我觉的最终是为了程序的可移植性,通过对流的定义我们可以看到,磁盘中的文件和其他的外围设备是等价的。这样程序在对这些物理实体进行操作就像是对文件进行数据的输入输出操作一样,这样对与编程就十分的有利,而且程序具有非常好的可移植性也就是通用性。
先写到这里,下一篇写再写缓冲区什么的。这是我的一点理解(其实还是有很多不理解的地方),有不对的地方希望大家可以帮忙指正出来,谢谢大家了。
- c语言笔记——对流的理解
- c语言笔记——对缓冲区的理解
- 对流式计算模型的理解
- InputStream——关于Java中对流的操作
- 【好程序员笔记分享】—— C语言指针的理解
- c语言笔记——对scanf()等输入函数的深入理解
- C语言学习笔记——关于 .obj 文件的理解
- 基于移动平台的多媒体框架——ffmpeg对流媒体的支持
- 对流媒体相关协议的认识(一) ——流媒体说明
- 对流媒体相关协议的认识(二) ——ES,PES,TS
- 使用机器学习算法对流量分类的尝试——基于样本分类
- 使用机器学习算法对流量分类的尝试——基于样本分类
- 再论C语言指针—对指针的理解
- C语言基础—函数的理解及应用
- C语言—理解函数指针以及它的用法
- 2---C语言|笔记【对C语言指针的初步理解】
- 深入理解C语言—酷壳
- 陈皓《深入理解C语言》学习笔记
- JavaScript 输出
- [leetcode] 447. Number of Boomerangs
- nose1.3.7文档翻译--1.Testing with nose
- 关于asp树形导航的问题!!
- Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0 解决方案
- c语言笔记——对流的理解
- 2016的回顾,展望2017
- MySQL 中间件 Mycat
- node+express+mysql 搭建一个多人博客
- HTML简介
- OpenSSL 生成证书
- 计算数组中每个数字出现的次数
- 01JSP指令标识
- 分布式服务框架--dubbo+zookpeer