Linux与C库中对于文件操作的函数

Linux文件编程

open函数
打开一个文件并返回文件描述符,后续读取、写入等操作都需要该返回值

  1. 头文件和原函数

    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>

    int open(const char *pathname, int flags);
    int open(const char *pathname, int flags, mode_t mode);

  2. 内容解析

    const char *pathname——打开文件地址(或用"./file")
    int flags——打开方式

     O_RDONLY 只读模式
     O_WRONLY 只写模式
     O_RDWR 读写模式
     O_CREAT 没有则创建(搭配“|”和0600使用)
    

    mode_t mode——操控者身份(0600为管理员)

close函数
关闭打开的函数,搭配open使用,open必须close!!!

  1. 头文件和原函数

    #include <unistd.h>

    int close(int fd);

  2. 内容解析

    int fd——文件描述符(open的返回值)

write函数
将指定内容写进文件中,函数返回值为录入字符串大小。

  1. 头文件和原函数

    #include <unistd.h>
    ssize_t write(int fd, const void *buf, size_t count);

  2. 内容解析

    int fd——所要写入的文件描述符
    const void *buf——将要写入的内容地址
    size_t count——想要写入文件的大小

read函数
读取文件的内容并记录,函数返回值为实际读取到的字符串大小。

  1. 头文件和原函数

    #include <unistd.h>

    ssize_t read(int fd, void *buf, size_t count);

  2. 内容解析

    int fd——所要读取的文件描述符
    void *buf——获取读到的内容存放地
    size_t count——想要读取的文件大小

lseek函数
移动文件内的光标位置。

  1. 头文件和原函数

    #include <sys/types.h>
    #include <unistd.h>

    off_t lseek(int fd, off_t offset, int whence);

  2. 内容解析

    int fd——想要移动光标的文件描述符
    off_t offset——从光标位置开始的偏移量
    int whence——移动光标到特殊位置

     SEEK_SET 将光标移至文件头位置
     SEEK_END 将光标移至文件尾位置
     SEEK_END 将光标移至当前所在位置
    

cp函数思路

cp 文件1 文件2

  1. main函数里赋予调用内容
    int main(int argc,char **argv)
    argc 检测文件数量是否够
    argv 用来读取文件
  2. 打开argv[1]读取文件内容
  3. 打开argv[2]写入读取内容
  4. 关闭两文件

读取存档,修改存档

  1. 使用open打开要修改的文件

  2. 读取文件并把内容放到readBuf中

  3. 利用strstr()找到修改内容

  4. 将指针偏移修饰内容

  5. 替换指针所在值

  6. 光标移至文件头

  7. 将readBuf中内容写到读取文件中

  8. 关闭读取文件

标准C库对文件操作

可移植性高相对于Linux

fopen函数
C库中的打开文件,返回值为FILE类型的指针。

  1. 原函数

    FILE *fopen(const char *pathname, const char *mode);

  2. 内容解析

    const char *pathname——打开文件地址(或"./a.out")
    const char *mode——打开方式

     "r" —— 只读 只能读取,不能修改
     "r+"—— 读写文件,文件必须存在
     "w"—— 写入并创建文件,若存在该文件则清空重建一个文件
     "w+"—— 写入、创建并更新文件
    

fclose函数
C库中的关闭所打开的文件。

  1. 原函数

    int fclose(FILE *stream);

  2. 内容解析

    FILE *stream——所要关闭文件的文件描述符

fwrite函数
C库中的写入函数,返回值为实际写入的个数

  1. 原函数

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

  2. 内容解析

    const void *ptr——所要写入的字符串地址
    size_t size——每次写入的大小
    size_t nmemb——写入的次数
    FILE *stream——写入文件的文件修饰符

    写入大小 * 写入次数 = 字符串长度

fread函数
C库中的读取函数,返回值为实际读取的个数

  1. 原函数

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

  2. 内容解析

    void *ptr——读取内容存放位置
    size_t size——每次写入的大小
    size_t nmemb——写入的次数
    FILE *stream——读取文件的文件修饰符

fseek函数
C库中的改变光标位置函数

  1. 原函数

    int fseek(FILE *stream, long offset, int whence);

  2. 内容解析

    FILE *stream——需改变光标位置的文件
    long offset——从光标开始偏移量
    int whence——改变光标位置

     SEEK_SET 将光标移至文件头
     SEEK_CUR 将光标移至当前位置(光标不动)
     SEEK_END 将文件移至文件尾 
    

fputc函数
C库中打印字符串

  1. 原函数

    int fputc(int c, FILE *stream);

  2. 内容解析

    int c——需要打印的内容(可使用字符串,打印时需要偏移)
    FILE *stream——打印到的目标文件的文件描述符

fgetc函数
C库中获取文件中内容

  1. 原函数

    int fgetc(FILE *stream);

  2. 内容解析

    FILE *stream——所要获取文件的文件描述符

feof函数
C库中检索文件的结束符号,若文件结束则返回非0值,若文件未结束则返回0值

  1. 原函数

    int feof(FILE *stream);

  2. 内容解析

    FILE *stream——所要获取文件的文件描述符

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值