write()与 read() 函数用法(C语言)

write()函数:将数据写入已经打开的文件内。

头文件:#include <unistd.h>

函数原型:ssize write(int fd,const void * buf,size_t count);

fd: 文件描述符。

buf: 定义的缓冲区,是一个指针,指向一段内存。

count: 写入文件的字节数。

返回值:成功返回写入文件的字节数,失败返回-1。

read()函数: 读取指定文件中的文件内容。

头文件:#include <unistd.h>

函数原型: ssize read(int fd, void *buf, size_t count);

fd: 文件描述符,读到文件末尾返回0。

buf: 是接收数据的缓冲区。

count: 读取字节数的大小,不能超过buf的大小。

返回值:成功返回实际读取的字节数,失败返回-1。

注意:在写完文件以后读取文件之前,要先关闭文件再重新打开文件,否则会出现错误。

因为写完文件以后文件流指针会指向文件末尾,这时再读取文件就会失败,使用上面的方法就避免了这种情况哦。

示例代码如下:

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

int main(int argc, char const *argv[])
{
    int fd;
    int ret;
    char buf[32] = "hello world!";
    char buf2[32] = {0};

    fd = open("t.txt",O_RDWR|O_APPEND|O_CREAT,0666);

    if(fd < 0)
    {
        printf("open file err\n");
        return 0;
    }
    printf("open success\n");

    ret = write(fd,buf,strlen(buf));
    if(ret < 0)
    {
        perror("write:");
        goto END;
    }    
    printf("write count= %d\n",ret);

    close(fd);
    fd = open("t.txt",O_RDWR|O_APPEND|O_CREAT,0666);

    ret = read(fd,buf2,32);
    if(ret < 0)
    {
        perror("read:");
        goto END;
    }
    printf("read bif2= %s\n",buf2);

END:
    close(fd);
    return 0;

}

  • 9
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
readwrite、lseek函数C语言中用于文件操作的常用函数,下面分别进行介绍: 1. read函数 read函数用于从文件中读取数据。其函数原型为: ```c ssize_t read(int fd, void *buf, size_t count); ``` 参数说明: - fd:文件描述符,指向需要读取的文件。 - buf:指向存放读取内容的缓冲区。 - count:需要读取的字节数。 read函数返回值为ssize_t类型,表示读取的字节数。当返回值为0时,表示已经到达文件末尾;当返回值为-1时,表示读取出错。 2. write函数 write函数用于向文件中写入数据。其函数原型为: ```c ssize_t write(int fd, const void *buf, size_t count); ``` 参数说明: - fd:文件描述符,指向需要写入的文件。 - buf:指向需要写入的数据的缓冲区。 - count:需要写入的字节数。 write函数返回值为ssize_t类型,表示写入的字节数。当返回值为-1时,表示写入出错。 3. lseek函数 lseek函数用于文件指针的定位。其函数原型为: ```c off_t lseek(int fd, off_t offset, int whence); ``` 参数说明: - fd:文件描述符,指向需要定位的文件。 - offset:偏移量,可以为正数或负数。 - whence:偏移起始位置,可以取值为SEEK_SET、SEEK_CUR或SEEK_END,分别表示从文件开头、从当前位置、从文件末尾开始计算偏移量。 lseek函数返回值为off_t类型,表示文件指针的新位置。当返回值为-1时,表示定位出错。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值