2023/6/20 文件IO的使用快速复习相关参数,后续有新内容在添加
特点
- 没有缓冲机制
- 围绕文件描述符(非负整数int),依次分配
- 默认打开三个文件描述符
0标准输入
1标准输出
2标准错误
- 可以操作除d以外的任意类型文件
- 文件IO是在POSIX中定义的输入输出,不是C库中的输入输出
函数接口
int open(const char *pathname, int flags);//打开 返回值成功为文件描述符
//pathname 文件路径名 flags为打开文件的方式 O_RONLY 只读,O_WRONLY 只写
ssize_t read(int fd, void *buf, size_t count);//读
ssize_t write(int fd, const void *buf, size_t count);//写
int close(int fd);
off_t lseek(int fd, off_t offset, int whence); //设置偏移量
//注意点返回值为文件的当前位置
功能实现
读写操作
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main()
{
int fd=open("text.txt",O_RDWR);
if(fd<0){ perror ("open err");return -1;}
char buf[32]="";
read(fd,buf,32);
printf("%s\n",buf);
write(fd,"hello",5);
close(fd);
return 0;
}
循环读源文件写新文件
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc,char const *argv[])
{
int fd_src,fd_new;
char buf[32]="";
fd_src = open(argv[1], O_RDONLY);
fd_new = open(argv[2], O_WRONLY|O_CREAT|O_TRUNC, 0666);//TRUNC 清空
if(fd_src<0||fd_new<0){ perror("open");return -1;}
while(1)
{
int s=read(fd_src,buf,32);//s为实际读到的个数
if(s==0)break;
write(fd_new,buf,s);
}
close(fd_src);
close(fd_new);
return 0;
}
标签:文件,复习,int,fd,IO,include,open
From: https://www.cnblogs.com/moveddown/p/17494117.html