linux_Linux文件操作IO函数

文件操作之文件IO

main函数

main函数的格式: int main(int argc,char *argv[]);    例如:运行:./a.out

标准格式进行解释:这有两个参数,运行时候生效,

argc表示运行时参数个数(注意:包含可执行程序本身

argv[]表示运行时各个参数指针作用--指向字符串首地址就是识别字符串

 例子:./main      buf[]=hello;

//输出一下argc

printf("argc = %d\r\n",argc);

//输出argv

printf("argv[%d]=%s\r\n",i,argv[i]);

open打开文件,获取文件描述符fd

头文件:

#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);    

参数:  const char *pathname   确定待打开文件的路径  例如: ./1.txt

        int flags         确定打开的方式  O_RDONLY/O_WRONLY  O_RDWR(可读可写)

 mode_t mode            设置权限值  例如: 0664

返回值:成功,返回对应文件的文件描述符fd

        失败 -1

功能:打开文件,并为文件分配一个文件描述符

//调用对应的OPEN函数

fd=open("./1.txt",O_RDWR);

if(fd < 0)

{

printf("open error\r\n");

return -1;

}

//打开目标文件

fd2=open(argv[2],O_RDWR|O_CREAT,0644);//O_CREAT文件不存在,创建,同时要赋予权限

close关闭文件描述符

头文件: #include <unistd.h>

原型:int close(int fd)

参数:int fd  表示关闭对应的文件的文件描述符

返回值:成功 返回0

        失败 返回-1

功能:关闭一个文件的文件描述符

i=close(fd);

if(i == 0)

{

printf("fd is exit success\r\n");

}

write往文件或终端里面写数据

头文件:#include <unistd.h>      // ssize_t 代表就是int类型

原型:ssize_t write(int fd,const void *buf,size_t count);

参数: int fd;   表示文件的描述符

       const void *buf;  表示缓存空间的地址   这个buf是用来保存数据的

  size_t count;  表示期望写入的长度

返回值:成功 返回实际写入长度

        失败 返回-1

功能:将数据从缓存空间读出,写入到指定的文件中

//调用一下write函数,往对应的fd里面写入数据

a=write(fd,buf,sizeof(buf));

printf("a = %d\r\n",a);

//调用一下write函数,在屏幕或者终端显示

a=write(1,buf,sizeof(buf));

printf("a = %d\r\n",a);

read从文件里面读数据,并保存在buf中

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

参数: int fd   表示文件的描述符

       void *buf 表示缓存空间的地址   ---用来放获取到的字符信息

   size_t count 期望读取数据的长度

返回值:成功 返回实际读取到的长度

        文件已经没有内容可供读取了,此时系统会返回0   

        失败 -1

功能:从文件中读取数据,将数据写入到对应的buf里面

注意:实际读取的数据长度要小于等于期望数据长度--指的就是count

//利用read函数,读取文件里面的信息,放到buf里面

a=read(fd,r_buf,sizeof(r_buf));

printf("a = %d\r\n",a);

printf("r_buf= %s\r\n",r_buf);

//从键盘上获取内容--fd = 0,获取到的内容放到r_buf

a=read(0,r_buf,sizeof(r_buf));

lseek文件的读写位置

头文件:

#include <sys/types.h>

#include <unistd.h>

原型:off_t lseek(int fd,off_t offset,int whence);

参数:int fd;       表示文件的描述符

      off_t offset  表示相对偏移量

 int whence  偏移基点,一般填写三种形式

                 SEEK_SET(表示起始位置)

   SEEK_CUR(表示当前位置)

   SEEK_END(表示文件的结尾)    

返回值:相对于起始位置的偏移量   失败  返回-1

功能:自由的调整文件的读写位置

例子:第一种:将文件的读写位置调整到开始位置后第5个字节

      lseek(fd,5,SEEK_SET);   //实例:一般情况下,从文件的开头这个地方开始 0

 第二种:将文件的读写位置调整到文件的末尾

 lseek(fd,0,SEEK_END);

 第三种:将文件的读写位置调整到当前位置的前两个字节

 lseek(fd,-2,SEEK_CUR);  

//调用lseek函数,完成读写位置的移位操作

b=lseek(fd,0,SEEK_SET);

printf("seek_set = %d\r\n",b);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值