read write函数 linux哲学 万物皆文件

  • (a). 定义一个学生结构体类型struct student,里边含有学号,姓名,分数,定义结构体数组struct student s[3],给数组赋初值后,写入文件,然后通过lseek偏移到开头,然后再读取进行打印输出

  • #include <homeworkhead.h>
    typedef struct student_s
    {
        int id;
        char*name;
        int score;
    }student_t,*pstudent;
    
    int main(int argc,char* argv[]){
        // ./student file
        ARGS_CHECK(argc,2);
        student_t s[3];
        s[0].id=1,s[1].id=2,s[2].id=3;
        s[0].name="aliy",s[1].name="bili",s[2].name="chuang";
        s[0].score=100,s[1].score=90,s[2].score=80;
        int fd=open(argv[1],O_RDWR|O_CREAT,0666);
        ERROR_CHECK(fd,-1,"open");
        write(fd,s,sizeof(s));//把结构体整个写进文件
        lseek(fd,0,SEEK_SET);
        student_t info[3];
        read(fd,&info,sizeof(s));
        ERROR_CHECK(fd,-1,"read");
        for(int i =0;i<3;i++)
        {
            printf("%d %s %d\n",info[i].id,info[i].name,info[i].score);
        }
        
        return 0;
    }

    直接write写入文件的是二进制数据,用户无法直接读取,但是这样写读出方便,可以直接read读出。如果是二进制-字符串-二进制这种方式写读的话,唯一的好处就是用户可以打开文本并能看懂信息,但是这样子写比较麻烦。

  •  

     

  •  

     

posted @ 2022-02-27 15:14  晓风霜度-  阅读(137)  评论(0)    收藏  举报