linux中的文件操作

文章详细介绍了文件操作的两种主要方式——系统IO和标准IO,包括它们的区别。系统IO是低级接口,无缓冲,而标准IO是高级接口,具有缓冲机制。接着,文章列举了C语言中用于文件操作的库函数,如fopen用于打开文件,fclose用于关闭文件,read和write分别用于读写文件内容,还提到了fseek进行文件定位等。此外,讨论了文件打开的模式和不同的文件流操作。
摘要由CSDN通过智能技术生成

1.文件操作分为两种:

1.1、系统IO:系统调用接口,open(), read(), write(), close()。是操作系统直接提供的编程接口(API)。


1.2、标准IO:标准库的I/O函数,fopen(), fread(), fwrite(), fclose(),是对系统调用接口进一步封装。


1.3、系统IO和标准IO有什么区别?
系统IO : 低级IO,没有缓冲机制。操作的对象是文件描述符
标准IO : 高级IO,有缓冲机制,标准C库中实现。操作的对象是文件流

 1.4系统开机的时候他就存在的文件
 stdin 标准输入
 stdout 标准输出
 stderr 标准出错
1.5

  1、打开文件
    (1)  int open(const char *pathname, int flags);//文件存在时用这种方式打开
    (2)  int open(const char * pathname, int flags, mode_t mode);//不存在时用这种方式先创建再打开
 2、写入文件
  (3)ssize_t write(int fd, const void *buf, size_t count);
  (4)close(fd)
 3、读取文件
  (5)ssize_t read(int fd, void *buf, size_t count);
  (6)creat(const char *pathname, int flags);
 4、文件内光标移动
  off_t lseek(int fd, off_t offset, int whence);

2.C库函数:

   fopen    fread    fwrite     fclose      fseek

    使用方式:路径+文件名   模式    权限

2.1 fopen

功能:打开一个文件
头文件:stdio.h
原型:FILE *fopen(const char *path, const char *mode);
参数:
        path:
           要打开的文件的路径(绝对、相对)
        mode:
            r:
                以只读的形式打开文件
                读写指针在开头
            r+:
                以读写的形式打开文件
                读写指针在开头
            w:
                以只写的形式打开该文件
                且清除文件的全部内容
                文件不存在就创建
                文件读写指针在开头
            w+
                以可读可写的形式打开该文件
                且清除文件的全部内容
                文件不存在就创建
                文件读写指针在开头
            a
                以只写的形式打开该文件
                文件读写指针在末尾
                文件不存就创建
            a+
                以读写的形式打开文件
                文件不存就创建
                读文件就在开头
                写文件总是在末尾
    返回值:
    成功返回 文件指针 FILE * 类型的
    失败返回 NULL

2.2 fclose
功能:关闭打开的文件
头文件:stdio.h
原型:int fclose(FILE *stream);
参数:FILE *stream
           就是打开文件返回的文件句柄
返回值:
            返回 0  成功
            返回 -1 失败

2.3 write
功能:写入一个缓冲区给文件
头文件:stdio.h
原型:size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
参数:ptr:你需要写入的缓冲区(内容)
          size:你一次写入多少个字节
          nmemb:你要写入几次
          stream:文件句柄
返回值:
        返回你成功写入的次数

2.4 fread
功能:从文件中读取一片内容
头文件:stdio.h
原型:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
参数:
        ptr:传入一个空间
        size:一次读取的内容的大小
        nmemb:你要读几次
        stream:文件句柄
返回值:
        size_t :读取的次数
头文件:stdio.h
原型:int fseek(FILE * stream,long offset,int whence);
参数: stream :文件句柄
            offset   :  为根据参数 whence 来移动读写位置的位移数
            whence:
                SEEK_SET: 从距文件开头 offset 位移量为新的读写位置
                SEEK_CUR: 以目前的读写位置往后增加 offset 个位移量
                SEEK_END :将读写位置指向文件尾后再增加 offset 个位移量        
              
返回值:
        调用成功时则返回 0
        若有错误则返回-1
注意:
    1.必须使用 ftell()来取得目前读写的位置。
    2.当 whence 值为 SEEK_CUR 或 SEEK_END 时,参数 offset 允许负值的出现

2.5 fputs
功能:往文件输入/写入字符串
头文件:stdio.h
原型:int fputs(char * str, FILE *stream);
参数: int c 就是你要写入的字符
             FILE *stream :就是文件句柄
函数返回值:
        如果写入成功 返回字符本身
        写入失败 返回 EOF(-1)

2.6 fgets
功能:往文件输入/写入字符串
头文件:stdio.h
原型:int fputs(char * str, FILE *stream);
参数: int c 就是你要写入的字符
            FILE *stream :就是文件句柄
返回值:
        如果写入成功 返回字符本身
        写入失败 返回 EOF(-1)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值