read write函数 linux哲学 万物皆文件
-
-
#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读出。如果是二进制-字符串-二进制这种方式写读的话,唯一的好处就是用户可以打开文本并能看懂信息,但是这样子写比较麻烦。