其他分享
首页 > 其他分享> > IO函数代码示例(open,close,write,lseek,read)

IO函数代码示例(open,close,write,lseek,read)

作者:互联网

        本代码基于linux系统下的C/C++,相关函数原型介绍如下

open():

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

参数分别为:文件所在路径,打开方式,文件的权限

成功返回一个最小且未被占用的文件描述符;失败返回-1.

close():

int close(int fd);

参数接收的是一个文件描述符.

read():

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

参数分别为:文件描述符,指针数组,文件大小;返回值可以用一个int类型变量来接收

write():

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

参数分别为:文件描述符,常量字符数组(一个字符串),写入字符串或字符的大小;

lseek():

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

参数分别为:文件描述符,当前位置设置的偏移量,字符位置.

whence可设置的值有以下三种:

       SEEK_SET
              The offset is set to offset bytes.

       SEEK_CUR
              The offset is set to its current location plus offset bytes.

       SEEK_END
              The offset is set to the size of the file plus offset bytes.

以下代码用来示例几个函数进行读写等操作:

#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<stdio.h>
using namespace std;
int main(int argc,char*argv[])
{
  //打开文件,没有就创建
  int fd =open(argv[1],O_RDWR | O_CREAT,0777);
  if(fd<0)
  {
   cout<<"打开失败"<<endl;
   return -1;
  }
  //写文件
  //ssize_t write(int fd, const void *buf, size_t count);
  write(fd,"hello,my guys!!",strlen("hello,my guys!!"));
  //移动文件指针到开始处
  //off_t lseek(int fd, off_t offset, int whence);
  //whence 三种设定 文件头,文件尾(最大),当前位置
  lseek(fd,0,SEEK_SET);
  //读文件
  char buf[1024];
  //进行初始化,它可以逐字节把整个数组设置为一个指定的值
  memset(buf,0x00,sizeof(buf));
  int num=read(fd,buf,sizeof(buf));
  cout<<"num="<<num<<"  buf= "<<buf<<endl;
  close(fd);
  return 0;
}

开始并没有指定文件路径,用arg[1]命令行参数,这样文件名就不会写死,方便更改。

使用命令进行编译,执行时指定 进行创建并读写操作的文件名user.log。得到结果读取15个字符hello,my guys!!

 同时 vi user.log 发现文件已经写入

 完结!!!!!!

标签:lseek,示例,read,int,描述符,fd,文件,offset,include
来源: https://blog.csdn.net/m0_60663280/article/details/121149421