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

我只知道将一个字符串常量write进去,然后用read读出来。比如:open(fd,...);lseek(fd,0,SEEK_SET);write(fd,"abcdefg... 我只知道将一个字符串常量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的数据,它们是如何存储的?又如何搜索某个并读出来? 展开
 我来答
luosiyong
推荐于2016-06-11 · TA获得超过3256个赞
知道大有可为答主
回答量:1090
采纳率:0%
帮助的人:1627万
展开全部
使用二进制存储
write(fd, &student, sizeof(student));
read(fd, &student, sizeof(student));

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

这样的前提是student中没有指针,因为每次运行指针的内容是不确定的。
百度网友43ebde78e
2011-07-02 · TA获得超过1040个赞
知道小有建树答主
回答量:592
采纳率:0%
帮助的人:699万
展开全部
直接是不能存储的,需要自己组织存储。比如,你的类有两个变量int a;char b;那么按你自定义的格式存储,一般可以加上标识符,化为字符串就可以了,比如sprintf(buf,"<a>%d</a><b>%c</b>\r\n",a,b).这样你就存储那个buf字符串就可以了。反过来你需要解析字符串,涉及查找和转化为你的数据类型,再构造类的实例。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式