• 文件操作


          写个读MP3文件程序才发现自己对c的文件操作太不了解了。资料整理如下:

      FILE *fopen(const char *filename, const char *mode);<stdio.h>

      打开模式选项常见的"w","r","a","w+","r+"(文件必须存在),"a+"操作ASCII文件,"b"表示操作二进制文件。函数成功执行返回文件指针,否则返回null。

      int _sopen(const char *filename, int oflag, int shflag[ ,int pmode]);<io.h>\<fcntl.h>\<sys/types.h>\<sys/stat.h>\<share.h>

      errno_t _sopen_s(int *pfh, const char *filename, int oflag, int shflag,

      int pmode);<io.h>\<fcntl.h>\<sys/types.h>\<sys/stat.h>\<share.h>

      以共享形式打开文件,打开模式oflag:_O_APPEND追加模式;_O_BINARY二进制(未转义成ASCII)模式;_O_CREAT创建并写新文件......

      共享模式shflag:_SH_DENYRW拒绝其它程序的读写操作,_SH_DENYWR拒绝其它程序写,_SH_DENYRD拒绝其它程序读,_SH_DENYNO允许读写

      当oflag为_O_CREAT时pmode才需要,如果文件不存在,pmode指定文件权限,否则,pmode可以被忽略

      函数成功执行,返回文件描述符,否则返回-1

      int _fstat(int fd, struct _stat *buff);<sys/stat.h>\<sys/types.h>

      获取打开文件信息

      fd:打开文件描述符。buff:指向存储结果的结构体

      获取文件信息成功返回0,否则-1

      注意定义在<sys/stat.h>中的struct stat

      struct stat {
            _dev_t st_dev;
            _ino_t st_ino;
            unsigned short st_mode;
            short st_nlink;
            short st_uid;  //用户id
            short st_gid;  //组id
            _dev_t st_rdev;
            _off_t st_size;  //文件大小
            time_t st_atime;  //最后访问文件时间
            time_t st_mtime;  //最后修改文件时间

            time_t st_ctime;  //文件创建时间
            };

      size_t fread(void *buff, size_t size, size_t count, FILE *stream);<stdio.h>

      size_t fwrite(void *buff, size_t size, size_t count, FILE *stream);<stdio.h>

      int fscanf(FILE *stream, const char *format[, argument]...);<stdio.h>

      int fprintf(FILE *dtream, const char *format[, argument]...);<stdio.h>

      文件读写时最好用fread与fwrite,不会因为文件中有NULL而文件并未结束而终止读写

      测试文件是否结束

      int feof(FILE *stream);<stdio.h>

      0文件结束,非0文件

  • 相关阅读:
    vue2.0路由-适合刚接触新手简单理解
    JAVA实现DES加密实现详解
    计算机网络: IP地址,子网掩码,网段表示法,默认网关,DNS服务器详解
    vue-自定义组件传
    mybatis 乐观锁和逻辑删除
    axios 全攻略之基本介绍与使用(GET 与 POST)
    PowerDesigner使用教程
    scala slick mysql utf8mb4 支持
    spring-boot jpa mysql emoji utfmb4 异常处理
    花生壳的ddns 关键时刻又掉链子,准备迁到阿里万网
  • 原文地址:https://www.cnblogs.com/littlejohnny/p/1778244.html
Copyright © 2020-2023  润新知