文件IO使用复习

2023/6/20 文件IO的使用快速复习相关参数,后续有新内容在添加

特点

  1. 没有缓冲机制
  2. 围绕文件描述符(非负整数int),依次分配
  3. 默认打开三个文件描述符 0标准输入 1标准输出 2标准错误
  4. 可以操作除d以外的任意类型文件
  5. 文件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;
    
}
posted @ 2023-06-20 17:02  moveddowm  阅读(6)  评论(0编辑  收藏  举报