linux文件操作

时刻记住一句话:Linux下一切皆文件,不管什么都是一个文件

1.系统IO和标准IO

文件操作一般分为两种:

1、系统IO:系统调用接口,open(), read(), write(), close()。是操作系统直接提供的编程接口(API)。
2、标准IO:标准库的I/O函数,fopen(), fread(), fwrite(), fclose(),是对系统调用接口进一步封装。
3、系统IO和标准IO有什么区别?
系统IO : 低级IO,没有缓冲机制。操作的对象是文件描述符
标准IO : 高级IO,有缓冲机制,标准C库中实现。操作的对象是文件流

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

2.系统I/O函数

2.1 函数打开:open

函数的功能:打开一个文件
函数头文件:#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);
函数的参数:
        pathname:
                文件的路径
        flags  :
                O_RDONLY  读
                O_WRONLY  写
                O_RDWR   读写
                O_CREAT  没有就创建 有就访问
                O_TRUNC  将文件截取为0
                O_APPEND:追加
        mode(可选):
            权限码就是 0664  0775   
函数返回值:
        成功返回文件的句柄(int)
        失败 -1

2.2 函数关闭:close

函数的功能:关闭一个文件(低级IO)
函数头文件:
             #include <unistd.h>
函数的原型:int close(int fd);
函数的参数:
            fd :文件的描述符
函数的返回值:
           0  成功
           -1 失败

2.3 写函数:write

函数的功能:写数据到文件里面
函数头文件:#include <unistd.h>
函数的原型:
    ssize_t write(int fd, const void *buf, size_t count);
函数的参数:
        fd : 就是文件的句柄
        buf: 就是你要写入的内容缓冲区
        count:写入的字节数
函数返回值:
            返回成功写入的字节数
            返回 -1 失败

2.4 读函数:read

函数的功能:读数据
函数头文件:#include <unistd.h>
函数的原型:
    ssize_t read(int fd, void *buf, size_t count);
函数的参数:
        fd : 就是文件的句柄
        buf: 就是读出保存内容缓冲区
        count:读出的字节数
函数返回值:  
            返回成功读出的字节数

3.标准IO函数

3.1 函数打开:fopen

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

在这里插入图片描述

3.2 函数关闭:fclose

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

3.3 标准的文件写:fwrite

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

3.4 标准的文件写:fread

函数的功能:从文件中读取一片内容
函数头文件:stdio.h
函数的原型:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
函数的参数:
        ptr:传入一个空间
        size:一次读取的内容的大小
        nmemb:你要读几次
        stream:文件句柄
函数返回值:
        size_t :读取的次数

3.5 函数写入字符串:fputs

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

在这里插入图片描述

3.6 函数写入字符串:fgets

函数头文件:stdio.h
函数的原型:char *fgets(char *s, int size, FILE *stream);
函数的参数:
        s : 就是你读取的缓存区
        size :读取的长度
        stream :文件句柄
函数返回值:
        函数成功:返回读取的首地址
        失败返回NULL

3.7 移动文件流的读写位置:fseek

函数头文件: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_CURSEEK_END 时,参数 offset 允许负值的出现

在这里插入图片描述

4. 常用的一些函数

4.1 perror(打印出错误原因信息字符串)

函数头文件:stdio.h
函数的原型:void perror(const char *s);
函数的作用:perror()用来将上一个函数发生错误的原因输出到标准错误
函数的参数:
			参数 s 所指的字符串会先打印出,后面再加上错误原因字符串
          	
函数返回值:
			无

4.2 feof(检查文件流是否读到了文件尾)

函数头文件:stdio.h
函数的原型:int feof(FILE * stream);
函数的作用:feof()用来侦测是否读取到了文件尾
函数的参数:
		stream 为 fopen()所返回之文件指针。如果已到文件尾则返回非零值,
		其他情况返回 0
          	
函数返回值:
		返回非零值代表已到达文件尾。

4.3 putchar(将指定的字符写到标准输出设备)

函数头文件:stdio.h
函数的原型:int putchar (int c);
函数的作用:putchar()用来将参数 c 字符写到标准输出设备。
函数返回值:
		返回成功输出c
		返回失败输出EOF
附加说明:putchar()非真正函数,而是 putc(c,stdout)宏定义。

4.4 fscanf(格式化字符串输入)

函数头文件:stdio.h
函数的原型:int fscanf(FILE * stream ,const char *format,....);
函数的作用:
		函数会自参数 stream的文件流中读取字符串, 再根据参数 format字符
		串来转换并格式化数据。
函数返回值:
		成功则返回参数数目
		失败则返回-1

总结

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值