流
Created|Updated
|Post Views:
前言
流,就类似于流水。从一个地方到另一个地方。
文件流,数据流。它们是文件/数据源与内存之间的传递。
文件流
当我们打开文件时,磁盘里的文件会复制到内存中。为什么,要传递给内存呢?因为它读写数据更快。而内存中有个FILE的结构体变量,它用来保存这些信息。当我们关闭文件时,这些信息就会从这个变量中释放。
- 输入流
文件从磁盘中复制到内存的过程 - 输出流
从内存保存文件到磁盘的过程
数据流
数据源就是包括文件,网络,键盘等。
- 输入流
数据从数据源——>内存 - 输出流
数据从内存——>数据源
I/O
input output
程序在内存中,通过程序与外部设备(磁盘,键盘,其他计算机)进行交互的操作。
Related Articles
2020-04-06
面向字符getc()和putc()
前言面向字符操作。 这两个函数类似于getchar()和puchar(‘ch’)。 区别在后面加多一个参数(FILE指针) 函数fopen() 函数声明:在stdio.h中 参数(文件名,读写等模式) 返回:文件指针FILE * fp; 文件指针并不指向实际的文件,它指向一个包含文件信息的数据对象,其中包含I/O函数所用的缓冲区信息。 getc()类似于getchar() 参数(FILE指针) 返回:文件中的一个字符 与getchar()函数类似,getchar()是从标准输入中获取字符。而,getc()是从指定文件中获取字符 putc()类似于putchar() 参数(一个字符,FILE指针) 作用将这个字符放入指定的文件中 exit() 函数声明:在stdlib.h头文件中 参数正常结束传递0,非正常传递非0值. 作用关闭所有打开文件,并结束程序 与return 不同的是:在main()以外的函数中调用exit()也能结束整个程序 fclose() 参数FILE指针 作用关闭指定文件 返回成功关闭:0不成功:EOF 示例将文件copy到其他...
2020-04-09
结构体声明和初始化
Introduction声明结构类型声明struct person{...}; 这个struct person起的作用就是一般声明中的int 例如:定义struct person类型的变量。struct person ferry, *pferry 声明过程与定义结构变量,可以组合成一个步骤。 12345struct /*无结构标记*/{ int a; int b;}library; 但如果要多次使用模板,就要加上标记。 1234567typedef struct BTNode{ char data; struct BTNode* lchild; struct BTNode* rchild;}BTNode; 这时编译器还没有在内存中分配空间。什么时候开始分配呢,当然是在初始化变量的时候。 初始化结构变量struct person ferry;这样就初始化了ferry这个变量,同时为该变量分配空间。当然,我们可以用这结构类型定义多个变量。这样就可以存储不同的信息。 初始化成员在刚开始声明结构中就有表明了要什么样的数据类型,再到...
2020-03-16
指针和const修饰符
前言 声明一个int类型的指针int * p 一个变量int x 随即,赋地址p = &x; 到了这里,p就是x变量的地址。*p 就是x的值。 示例 const float * p float const * p //1.2.等价 float * const p const float * const p所以,就懂了。const修饰值,就不能改变值。修饰地址,就不能改变地址。
2020-04-14
程序崩溃的可能原因
程序的崩溃的可能由于: 擦拭调程序的代码(把赋值给野指针) 内存越界数组下标越界和指针移动越界 参数错误 12printf("%s %s's grade is %lf %lf %lf and your average is %lf\n", p[i].grade[0], p[i].grade[1], p[i].grade[2], p[i].average); 函数栈溢出 读取未赋值的变量
2020-04-09
指向结构的指针
前言结构指针与结构数组,他们一起使用时会更加方便。就像指针和数组。 结构指针的声明struct guy * him 指向 him = &fellow[0]但是有一点需要注意:单纯的结构数组名没有作用数组的变量名是数组的首元素地址。结构数组的变量名不是结构数组的首结构地址。所以但要将首结构的地址赋给指针时,要加上&和[0] 用指针访问him->handle.first//意义:用him指针指向成员的成员等价于(*him).handle.first//意义:取值为结构struct guy fellow[0]这个结构这里必须要用(),因为.比*的优先级高。 示例12345678910111213141516171819202122232425262728293031323334353637383940414243/* friends.c -- uses pointer to a structure */#include <stdio.h>#define LEN 20struct names {...
2020-05-15
&&||的记忆与短路
||=== A||B 记忆如果当A与B都是false才false,其余都是true(只有1个假) 短路如果||的左侧表达式为真,则不会执行右侧表达式。 && A&&B 记忆如果当A与B都为true才true,其余都是false(只有1个真) 短路如果&&的左侧表达式为假,则不会执行右侧表达式。
