linux中文件的读写操作 上篇(函数open、 read 、write、 close)

linux文件读写(一)

1. 查看man手册
man查询手册
<1>man 1 +命令 这里的1表示为查询的是Linux命令
<2>man 2 xxx 这里的2表示为查询的是linux api
<3>man 3 xxx 这里的3表示为查询的是c库函数
2. linux下的文件接口函数
open read write close lseek
3. 文件操作的基本步骤与注意事项

a.文件的打开(open

函数原型

int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
/*在linux函数调用中实际上使用的第二个函数
C语言中没有重载*/

参数:

  pathname:需要打开的文件路径
  flags:   打开状态
  			O_RDONLY: 只读打开
  			O_WRONLY:只写打开
  			O_RDWR:  可读可写打开
  			O_CREAT:  创建
  mode:	    读取权限 例:0666

返回值:

如果返回值为-1则打开失败

b.文件的读(read

函数原型

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

参数:

fd:   文件描述符(函数open的返回值)
*buf: 缓冲区(存储需要读的数据)
count:缓冲区的大小( sizeof(buf))

返回值:

如果返回值为-1则读取失败

c.文件的写(write

函数原型

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

参数:

fd:    文件描述符
*buf: 缓冲区(要写到文件的数据)
count:数据的大小( strlen(buf))

返回值:

如果返回值为-1则写入失败

测试代码:

#include<stdio.h>
#include<unistd.h>
#include<error.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<string.h>
#include<fcntl.h>

int main(int args,char *argv[])
{
	char readbuf[128]={0};           //缓冲区
	char *str="hello world!";
	int fd;
	int n_read;
	int n_write;
	
	if((fd=open("./test.c",ORWR||O_CREAT))==-1)  //文件的打开
	{
		perror("open");
		exit(-1);
	}
	if((n_read=read(fd,readbuf,sizeof(readbuf)))==-1)   //文件的读取
	{
		perror("read");
		exit(-1);
	}
	if((n_write=write(fd,readbuf,strlen(readbuf)))==-1//文件的写入

	{
		perror("write");
		exit(-1);
	}
	printf("返回的文件描述符 fd=%d\n",fd);
	printf("读取的大小       n_read=%d\n",n_read);
	printf("写入的大小       n_write=%d\n",n_write);
	close(fd);	//文件的关闭
	return 0;
}

输出结果:
开始的是一个空文件可创建

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值