文件操作篇——打开 读写 关闭操作

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:
1.O_RDONLY:只读打开
2.O_WRONLY:只写打开
3.O_RDWR:可读可写打开
当我们附上权限之后,打开的文件就只能按照这种权限操作。以上这三个常数中应当只指定一个。下列参数是可选择的:
O_CREAT:若文件不存在创建它。使用此选项时,需要同时说明第三个参数mode,用其说明新文件的存取许可权限
O_APPEND: 追加写,如果文件已经有内容,这次打开文件所写的数据附加到文件的末尾而不覆盖原来的内容
O_TRUNC 如果文件存在,并且以只写/读写方式打开,则清空文件全部内容(即将其长度截短为0)

Mode:一定是在flags中使用了O_CREAT标志,mode记录待创建的文件的访问权限。
例如:fd = open("./file1",O_RDWR|O_CREAT,0600);
返回值:文件描述符fd
fd == 0 打开文件失败
fd > 0 打开文件成功

write(将数据写入已打开的文件内)

需要的头文件:
#include <unistd.h>
参数原型:ssize_t write(int fd, const void *buf, size_t count);
fd:open函数返回的文件描述符
buf:待写入数据缓存区
count:要写入的字节数
例如:char *buf = “chenweiqiang hen shuai!”;
write (fd,buf,strlen(buf));
返回值:若写入成功,返回写入的字节数
失败返回-1

read(由已打开的文件读取数据)

需要的头文件:
#include <unistd.h>
参数原型:ssize_t read(int fd, void *buf, size_t count);
fd:open函数返回的文件描述符
buf:读取数据缓存区
count:要读取的字节数
例如:char *readBuf
readBuf =(char *) malloc (sizeof(char)*n_write +1 );
int n_read = read(fd,readBuf,n_write);
返回值:若读取成功,返回读取的字节数
失败返回-1

close(关闭文件)

需要的头文件:
#include <unistd.h>、
参数原型:int close(int fd);
fd:由open函数返回的文件描述符
例如:close (fd);
返回值:成功关闭返回0
失败返回-1

在这里插入图片描述

lseek(移动文件的读写位置)

需要的头文件:
#include <sys/types.h>
#include <unistd.h>
参数原型:off_t lseek(int fd, off_t offset, int whence);
fd:open函数返回的文件描述符
offset:根据参数whence来移动读写位置的位移数(负数往前走,正数往后走)
whence:
SEEK_SET(文件开始处)
SEEK_CUR(文件当前位置)
SEEK_END(文件末尾)

例如:lseek(fdSrc,0,SEEK_SET);
返回值:当调用成功返回目前的读写位置,也就是距离文件开头有多少个字节
失败返回-1

实现cp(复制)功能(代码实现):

1.c语言参数
2.第一步:打开src.c
第二步:读src到Buf
第三步:打开/创建des.c
第四步:将Buf写入到des.c
第五步:关闭2个文件

在这里插入图片描述

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值