linux C函数write()写入的数据是如何存储的?read()又是如何读取的?

我只知道将一个字符串常量write进去,然后用read读出来。比如:open(fd,...);lseek(fd,0,SEEK_SET);write(fd,"abcdefg",7);close(fd);open(fd,...);lseek(fd,0,SEEK_SET);read(fd,buffer,7);printf("%s\n",buffer);输出:abcdefg。但如果数据时一个结构体Student时,而且有多个数据类型为Student的数据,它们是如何存储的?又如何搜索某个并读出来?

使用二进制存储
write(fd, &student, sizeof(student));
read(fd, &student, sizeof(student));

如果要读取里面第3个student的内容:
lseek(fd, 2 * sizeof(student), SEEK_SET); //即从开始搜索2个student那么长。

这样的前提是student中没有指针,因为每次运行指针的内容是不确定的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-02
直接是不能存储的,需要自己组织存储。比如,你的类有两个变量int a;char b;那么按你自定义的格式存储,一般可以加上标识符,化为字符串就可以了,比如sprintf(buf,"<a>%d</a><b>%c</b>\r\n",a,b).这样你就存储那个buf字符串就可以了。反过来你需要解析字符串,涉及查找和转化为你的数据类型,再构造类的实例。
相似回答