【LINUX文件IO编程】系统IO的简单应用

代码介绍:

功能:写入一定数据,然后在读取这些数据。其中涉及到文件指针的问题,中间也涉及到关不关闭文件描述符。下面会解释。


/*********************************************************************
 * 版权所有: Copyright (c) 2023-2024  XXX Company. All rights reserved.
 * 系统名称: 
 * 文件名称: main.c
 * 内容摘要: open write lseek read close函数的应用
 * 当前版本: 
 * 作    者: WLC
 * 设计日期: 2023-01-21 15:58
 * 修改记录: 
 * 日    期          版    本          修改人          修改摘要
**********************************************************************/
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <malloc.h>
#include<unistd.h>

int main(int argc, char *argv[])
{
    int fd, num;
    fd = open("a.txt", O_RDWR|O_CREAT|O_TRUNC, 0777);
    printf("fd=%d\n", fd);
    printf("hello world!!!\n");
    num = write(fd, "this is demo!", strlen("this is demo!"));
    if(num>0)
    {
        printf("data is save!\n");
    }else
    {
        printf("data save failed!");
    }
    printf("num=%d\n", num);
    lseek(fd, -num, SEEK_CUR);
    int len;
    char str[50]="";
    len = read(fd, str, num);
    printf("len=%d\n", len);
    if(len>0)
    {
        printf("txt content:%s\n", str);
    }else if(len<0)
    {
        printf("content read failed!");
    }else
    {
        printf("read over!\n");
    }
    close(fd);
    return 1;
}

代码解释:

open函数:

fd = open("a.txt", O_RDWR|O_CREAT|O_TRUNC, 0777);

open函数是文件打开函数。

O_RDWR:读,写打开。

O_CREAT:若文件不存在,则创建它,需要使用mode选项。来指明新文件的访问权限,也就是后面这个0777。

O_TRUNC:若文件存在则覆盖

其他的选项可以查看其他人写的文章,在此就不一一描述了。

这句话就是打开a.txt文件(可以进行读操作,也可以进行写操作,若文件存在则把里面的内容清空,若不存在该文件,则创建一个名为a.txt的文件),用fd来接收open的返回值,他是文件描述符用来进行文件操作的,权限设为0777。

write函数:

num = write(fd, "this is demo!", strlen("this is demo!"));

write函数是写入函数,把 this is demo! 这几个单词包括!号一起写入这个fd的句柄里面,而这个句柄你可以理解为就是a.txt这个文件,也就是把这些内容写入a.txt文件里面。然后第三个参数是你写入内容的长度。返回值num就是你实际写入的字节数。

lseek函数:

lseek(fd, -num, SEEK_CUR);

这个函数是操作文件指针的函数,lseek(fd, -num, SEEK_CUR);这一行的意思就是把文件指针从当前位置向前移动num的单位。在这里“-”代表向前移动,“+”代表向后移动。所以此时文件指针就又到了开头,文件的读写都是基于文件指针此时的位置的,打开文件后文件指针就是在文件最开头,写入完数据后文件指针就是在数据最后面,此时要进行文件读操作就需要把文件指针移到开头。

read函数:

len = read(fd, str, num);

这个函数是进行文件读取的函数。他会从fd中读取num字节的数据并把数据保存到str这个数组里面。返回值len是具体读取到的字节数。

close函数:

close(fd);

关闭fd文件描述符。在进行完操作之后一定要记得及时关闭文件描述符,要不然会出错。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

April.19th

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值