Stdio.h :标准输入输出
I/o:输入输出(站在计算机的角度,以计算机位置中心进行读写)
IO input output
Linux中一切皆文件
所有的c标准头文件路径:/user/includer
Stdio.h的c文件在Linux系统中不叫stdio.c而是libc.so(位置/usr/lib) so:动态库(共享库)
动态库:lib开头,so结尾
I: 键盘是标准输入设备 ====》默认输入就是指键盘 /dev/input
O: 显示器是标准输出设备 ==》默认输出就是指显示器
Linux操作系统当中IO都是对文件的操作
C一部分,任何支持标准C的系统都可使用标准IO实现文件存储
标准IO在UNIX上是对文件IO的封装
Man:
第一章 函数命令
第二章:系统调用函数(只存在linux)
第三章:库函数
第四章:设备文件
五章:etc:系统级别的配置 文件格式和
第六章:游戏
第七章:杂项
第八章:管理员命令
第九章:内核更新
使用man 手册查函数不是2,就是3
文件读写步骤:(打开,读写,关闭)
1.打开文件file
2.io操作,读写操作
3.关闭文件
1.Fopen
2.读写相关操作
fopen:r/r+:文件必须存在
FILE*:文件流指针
Vimdiff:文件内容对比
Stat:那到文件的详细信息
内存速度快,a.out在内存中
因为fgets要读的内容是字符串,所以会自动在读取的内容后面加\0
所以开的buf的空间应该尽可能比原有文件字节数长
Char buf[]中,[]内的数据长度指的是要打开的文件一行的长度
Fgets和fputs只能处理文本文件,不能处理图像
因为fgets和fputs每一次复制都是一个字符串,是以0为结束标志的,但是图片在内存中以二进制存放,有极大可能会出现00这样的数,fgets会将此误判为截断标志,那么复制的字节数就会远小于原有文件的字节数,导致数据丢失,因此不可用来处理图像。
文件分类:文本文件、二进制文件
流:FILE*:数据从文件中流出和流入所体现出来的字节流叫做流
流的分类:
二进制流:2001 \n
二进制数据的流
文本流:
ASCII码数据的流 \n \t
FILE结构定义的对象FILE*称之为流对象,也叫文件流指针
stdin FILE* scanf ();
stdout printf();
stderr
Cat:查看文本文件
Od:查看二进制文件(照片等)
格式
系统提供的三个流指针(FILE*):当a.out开始运行的时候,系统就会自动调用这三个流指针
Stdin:标准输入 相当于scanf使用
Stdout:标准输出
Stderr:标准错误输出,区别在于缓存区
Fread,fwrite
结构体清空可以像数组一样直接赋值0:{0}
也可以用memset置0
还可以用bzero函数清0
什么时候用箭头或者点:
指针的时候用箭头,变量的时候用点
一般情况下,这里是void*的时候,传的是二进制的
Char*的时候是字符串
可以写1也可以写4(指针数组),一次性就把四个全写进去
返回值是int:正常情况下是1
总结:
- 标准io:c库
- 文件操作:打开读写关闭 fgets/fputs(一行)
Fgets:遇到\0就停止写入了