C语言文件读写

文件读写的两种方式

文件读写的方式在我的认知中大致分为两种方式,第一种是用文件指针来进行文件的读写操作,第二种就是文件描述符来进行文件的读写操作

  • 以文件指针进行操作
    FILE *fopen(const char *path,const char *mode);
    功能:打开或者创建文件
    path:路径
    mode:文件打开或创建的的权限
    返回值:文件指针
    int fprintf(FILE *steam,const char *format,...)
    stream: 文件指针,fopen的返回值
    format:占位符和字符组成的一个字符串
    …:变量名
    返回值:成功写入的字节数
    int fscanf(FILE *steam,const char *format,....)
    stream: 文件指针,fopen的返回值
    format:占位符和字符组成的一个字符串
    …:变量的地址
    返回值:读取到的字节数
    size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream)
    ptr:读取文件后的存储位置
    size:每次写入的字节数
    nmemb:写入的次数
    stream:文件指针
    返回值:成功写入的次数
    size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream)
    ptr:读取文件后的存储位置
    size:每次读取的字节数
    nmemb:读取的次数
    stream:文件指针
    返回值:成功读取的次数

  • 以文件描述符进行的文件读取操作
    int open(const char *pathname,int flags)
    功能:打开文件
    pathname:文件的路径
    flags:打开的权限
    int open(const char *pathname,int flags,mode_t mode)
    功能:创建文件
    pathname:文件的路径
    flags:打开权限
    mode:设置文件的权限
    ssize_t read(int fd,void *buf,size_t count)
    功能:从文件中读取数据到内存
    fd:文件描述符
    buf:数据的存储位置
    count:读取的字节数
    返回值:成功写入的字节数
    注意:如果把结构体以文本形式写入到文件中,需要先把结构体转换成字符串

  • 文件指针和文件描述符的区别
    文件描述符是一个非负整数,表示一个打开的文件,由系统调用open/create/socket函数的返回值,为什么使用文件描述符而不像标准库那使用文件指针?因为记录文件相关信息的结构存储在内核中,为了不暴露内存的地址,因此文件指针不能直接给用户操作,内核中记录一张表,其中一列是文件描述符对应一列文件结构指针,文件描述符就相当于获取了文件结构指针的下标
    内核中已经有三个已经打开的文件描述符,他们的宏定义在unistd.h
    stdin 0 STDIN_FILENO
    stdout 1 STDOUT_FIENO
    stdree 2 STDERR_FILENO

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值