标准IO学习

linux应用编程 (高级编程)
IO
多任务
网络

IO(文件) 

文件操作:
文本文件,mp3,jpeg,png ,mp4,avi

文件:
    一组相关数据的有序集合
文件名:
    这组相关数据的一个名称

linux里面对文件的处理:
思想:
      一切皆文件 ,文件用来存储数据(数据、指令)
  
  everything is file!
  

b c d - l p s 

b -- block      -- 块设备文件   --- 硬盘(存储设备) 
c -- character  -- 字符设备文件 --- 鼠标 
d -- directory  -- 目录文件     
- -- regular    -- 普通文件 
l -- link       -- 软连接文件   --- 类似windows的快捷方式  
p -- pipe       -- 管道文件     --- 实现操作系统中 进程间的一些 信息交换(通信)
s -- socket     -- 套接字文件   --- 网络的时候 (进程间的通信)




【操作文件的基本思路及框架】//凡是文件,都可从这个思路出发进行思考
文件操作三步骤:
1.打开 
2.读写
3.关闭 

Linux提供的两种文件操作方式:
文件编程:
1.标准IO --- 库函数  -------标准c库函数,
2.文件IO --- 系统调用-------Linux内核为用户提供的函数接口


系统调用:Linux内核为用户提供的函数接口
库函数:标准c库函数, 对Linux内核中系统调用的封装
    
    

标准IO库:
1.标准io的概念 
    1975 Dennis Ritchie编写, IO库,
    从C语言的标准,ANSI c 
IO  input  output
I: 键盘是标准输入设备 ====》默认输入就是指键盘  /dev/input
O: 显示器是标准输出设备 ==》默认输出就是指显示器

Linux操作系统当中IO都是对文件的操作
C一部分,任何支持标准C的系统都可使用标准IO实现文件存储
标准IO在UNIX上是对文件IO的封装
   
    一般都是对普通文件操作是一种有缓存的IO 在文件IO和用户程序之间,
加入缓冲区,可以有效减少系统调用的次数,节省系统IO调度资源



2.功能:
  用来操作普通文件
      普通文件:
1.ASCII码文件(代码、文本文件)
2.二进制文件(音视频、图片)

ASCII码文件是一种特殊的二进制文件

2021
'2' '0' 2' '1' 

2021
0000 0000 0000 0000 0000 0111 1110 0101


3.操作方法
1.打开 -- fopen  //FILE open
2.读写 --
  fgetc / fputc   读出、写入单个字符
  fgets / fputs   读出、写入一行字符
  fread / fwrite  读出、写入指定长度数据
3.关闭 -- fclose          


man手册
标准man手册分为8个章节:
man 1        用户命令
man 2        系统调用
man 3        c函数库调用
man 4        设备文件和特殊文件
man 5        配置文件和格式
man 6        游戏相关
man 7        杂项,总述
man 8        管理类命令

4.API函数接口
 
    1.fopen
#include <stdio.h>
FILE* fopen(const char *path, const char *mode);
功能:
 流打开函数 (打开文件,并关联到一个流)
参数:
@path --要打开的文件的文件名(字符串形式)
@mode --打开文件的操作模式
r ---打开文件做读操作
 注意:
 文件必须存在 
 
r+   打开文件做读写操作
 注意:
 文件必须存在
 
w    打开文件做写操作
 注意:
 如果文件已经存在,则会将文件清空为0
 如果文件不存在,则会创建一个新文件。
 
w+  打开文件做读写操作
 注意:
 如果文件已经存在,则会将文件清空为0
 如果文件不存在,则会创建一个新文件。

a    打开文件做写操作
 注意:
 如果文件已经存在,则在文件末尾进行写入 
 如果文件不存在,则会创建一个新文件。
 
a+   打开文件做读写操作
 注意:
 如果文件已经存在,则在文件末尾进行写入 
 如果文件不存在,则会创建一个新文件。


返回值:
   成功 FILE *  (文件流指针)
   失败 NULL 并且 设置 errno 表明错误原因 



   
流:
数据从文件当中流入和流出所体现出来的字节流叫做流

FILE 结构定义的对象(FILE * 指向的对象)称之为流对象,FILE *叫文件流指针。


标准IO将对文件的操作转换成了对"流"的操作。
所以,标准IO的文件相关的函数都是围绕着 FILE进行的。
 
  FILE * fp 
  FILE * fp;//流指针------关联一个文件   
  FILE * 实际上是指向了一块内存空间(缓存,fileno)
  
  
  FILE *fp <->【FILE结构体[缓存,fileno]】//堆区(malloc)
 
2.fclose
  int fclose(FILE *fp);
  功能:
关闭文件流指针 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值