Linux系统编程——文件编程(七)向文件里面写入整数 结构体以及结构体数组

read和write函数原型为

ssize_t read(int fd, void *buf, size_t count);
ssize_t write(int fd, const void *buf, size_t count);

一般对buf的操作都是写入或者读出字符串,由函数原型可以看出buf是一个无类型的指针,指针又是存放地址的,所以buf可以是一个变量的的地址

1、向文件写入整数

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
int main()
{
	int fd;
    int data1 = 100;
    int data2 = 0;
    fd = open("./file1",O_RDWR);
    int n_write = write(fd,&data1,sizeof(int)); //向file1文件写入data1地址指向的内容
    lseek(fd,0,SEEK_SET);
    int n_read = read(fd,&data2,sizeof(int));   //读出文件描述符的内容到data2
    printf("data2:%d\n",data2);                
    close(fd);                  
    return 0;
}

在这里插入图片描述
可以看到成功的向file1写入了整数100,但是打开file1里面并不是100
在这里插入图片描述
虽然人看不懂这个,但是电脑可以识别,这个不是代表程序有问题

2、向文件写入结构体

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
struct test{
	int a;
	char c;
};
int main()
{
	int fd;
    struct test data1 = {100,'p'};
    struct test data2;
    fd = open("./file1",O_RDWR);
    int n_write = write(fd,&data1,sizeof(struct test));
    lseek(fd,0,SEEK_SET);
    int n_read = read(fd,&data2,sizeof(struct test));
    printf("data2 : %d  %c\n",data2.a,data2.c); 
    close(fd);
    return 0;
}

在这里插入图片描述

3、向文件写入结构体数组

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
struct test{

	int a;
	char c;
};

int main()
{
	int fd;
    struct test data1[2] = {{100,'q'},{200,'w'}};
    struct test data2[2];
    fd = open("./file1",O_RDWR);
    int n_write = write(fd,&data1,sizeof(struct test)*2);
    lseek(fd,0,SEEK_SET);
    int n_read = read(fd,&data2,sizeof(struct test)*2);    
    printf("data2 :%d  %c\n",data2[0].a,data2[0].c);
    printf("data2 :%d  %c\n",data2[1].a,data2[1].c);
    close(fd);
    return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值