嵌入式ANSI_C 文件管理

ANSI_C 文件管理

  • 主要是文件库,ANSI_C 封装了文件系统的调用,是linux c最基本的文件编程

文件指针和流

  • 文件是一个永久储存,有序有名称的字节组成的集合
  • 指针FILE,可以对文件进行读写,关闭的操作。文件操作都是基于这个概念的,当文件打开之后,流就和文件绑定在一起
  • 文件储存方式

文件以文本方式储存

ASCII文件,每个字节储存ASCII码,储存量大,操作及其的慢

文本以二进制的方式储存

linux储存文件的方式
  • 进程三个模式

    • 标准输入
      外设的输入,默认键盘读取数据
    • 标准输出
      文件的输出,默认输出到屏幕
    • 标准错误
      默认是向屏幕输出数据
  • 缓冲机制

    全缓冲

      等缓冲区写满之后才会把数据写进磁盘
    

    行缓冲

      好行为单位进行缓冲处理,遇到换行符进行操作比如标准输入输出
    

    不缓冲

      直接调用`write()`函数写到设备上
    

    缓冲函数

    void setbuf(FILE *fp,char *buf);
    
    /*
    @description:打开或者关闭io流实用的缓冲
    @param:buf指向一个缓存区,打开全缓存,关闭NULL
    */
    int setvbuf(FILE *fp,int mode,size_t size);
    
    

打开,关闭文件


FILE *fopen(const char *path,const char *mode);
## 返回是一个文件指针,创建文件失败返回null
int fclose(FILE * stream);

mode参数对应功能
r读打开文件
w写打开文件,文件长度为0
a文件结尾添加打开
r+读和写打开
w+写打开文件
a+文件结尾读写文件

读写文件

有三种文件读写方式

## 以字符为单位的读写函数
## 三个读函数
int getc(FILE *stream);
int fgetc(FILE *stream);
// 这两个函数作用是相同的,返回一个读取的字符

int getchar(void);


// 三个写函数
int putc(int c,FILE *stream);
int fputc(int c,FILE *stream);
int putchar(int c);

// 以行为单位的读写函数
char *fgets(char *s,int size.FILE *stream);
char *get(char *s);
// 标准输入一行字符串,size为字符个书
// 第二个函数尽量不用,会有漏洞

int fputs(const char *s,FILE *stream);
int puts(const char *s);
// 后面的函数会在写一段字符之后换行

// 成块数据的文件读写函数
因为上述函数会遇到full会终止,而且需要多次循环

size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream);

/*
ptr 内存中存放数据块的地址
size 数据块大小
nmemb 数据块数量
读写成功返回数据块个数

*/

文件流定位

  • 在读写文件时候,每个文件都会维护一个文件流指针,这个指针表示文件写的位置,指向文件最开头,当用户要修改数据时候,要不停改变文件流定位

对应函数

int fseek(FILE *stream,long offset,int whence);
long ftell(FILE *stream);
void rewind(FILE *stream)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值