《哲思动态》2017岁末特刊

2.由卫叔宝之死看魏晋风骚一道

过去的二〇一七年,一道兄手头还要展开的一序列有多少个,包含《庄周·齐物论》、《亚圣》等。三两日便更新一篇,产量惊人却都突显了扎实细致的风骨。这一篇解读《世说新语》的篇章更是如此,一道兄早先的地方力透原典的每个字,从不肯用“大意”去敷衍。入手处极细微而用功极深,则浑然有力。

 

4.守礼就是明白贵贱有别:袭人的确是两面派吗?沸腾四海

各处兄的名称时不时更换,宽心贝勒也常见,最近是贝勒吉祥——恨不只怕一撩大褂给爷请安。文末处打赏评释更是风骚可爱:卖文买书——本月要买《西游证道书》。难点则不时是《XX为啥XX》,深谙自媒体作品的命名之道。不过贝勒爷的篇章小编却从不虚言,文史典籍随手引用,最华贵的是题材发现极强。《为何XX》的文章极多,解读《红楼梦》的如过江之鲫,可惜那一个“为啥”大多是些假难点。贝勒爷能提议的确有趣的题材来,是抓好的素养所致。

// struct student 结构体序列化到文件的方法static void _student_serialize(struct student* stu, FILE* txt) { fprintf(txt, "%d %c %d %s %lf %lf ", stu->id, stu->sex, stu->age, stu->name, stu->high, stu->weight);}// struct student 结构体反序列化static void _student_deserialize(struct student* stu, FILE* txt) { fscanf(txt, "%d %c %d %s %lf %lf ", &stu->id, &stu->sex, &stu->age, stu->name, &stu->high, &stu->weight);}

这种消除方案讲到那里了.

八月6日:专题刊物诞生

借着十月份万物生长的彩头,《简书哲思周刊》发表了创刊号。刊物是专题的历史记录,即便一年经过中有为数不少失利和辛劳,那踉跄的率先步仍值得回顾。按最初的分工,梁光宇兄负责管理学类板块,心技一体担当中国传统类内容的板块。

参考文献:

简书哲思周刊170306|贞下起元

简书哲思周刊170310|生命之于大家

#include <stdio.h>#include <stdlib.h>#define _INT_NAME (64)#define _STR_TXT "student.struct"struct student { int id; char sex; int age; char name[_INT_NAME + 1]; double high; double weight;};// struct student 结构体序列化到文件的方法static void _student_serialize(struct student* stu, FILE* txt) { fwrite(stu, sizeof(*stu), 1, txt);}// struct student 结构体反序列化static void _student_deserialize(struct student* stu, FILE* txt) { fread(stu, sizeof(*stu), 1, txt);}// 简单打印数据static void _student_print(struct student* stu) { static int _idx; printf("%d: %d %c %d %s %lf %lf \n", _idx++, stu->id, stu->sex, stu->age, stu->name, stu->high, stu->weight);}/** 一种最简单的通用序列化方法*/int main(int argc, char* argv[]) { FILE* txt = fopen(_STR_TXT, "wb+"); if (NULL == txt) { fprintf(stderr, "fopen " _STR_TXT " error!\n"); return -1; } // 这里写入数据 struct student stu = { 0, 0, 23, "鸣人", 172.23, 64.05 }; _student_print(&stu); // 这里序列化并写入数据到文件 _student_serialize(&stu, txt); // 我们读取这个文件, 先设置文件指针到文件开头 fseek(txt, 0, SEEK_SET); // 开始读取数据 struct student ts; _student_deserialize(&ts, txt); _student_print(&ts); fclose(txt); system("pause"); return 0;}

6月 21 日:6月风暴

切切实实日子已不可考,上七个月末的时候简书专题陆续启幕“盛开投稿”,在一片狐疑与惶恐中,悬了一八个月的改正之刃同样落在了哲思专题的头上。大批量稿子须臾间涌入专题,整个【哲思】团队蓄势待发剔除非哲思类的投稿文章。那是乱套而疯狂的风云,姑称之为“二月台风”,以三月21日首页投稿的开放通告看作标志。

参考文献:

人人都能上首页 | 喜大普奔,
首页投稿明天开放了

编译 命令的是

7.三个隐喻中的本体论:Plato的诗学希臘智術史

希臘智術史老师的“学术训练”体系,风格简朴严俊,不为简书的奢华所动,只介绍最有学问味儿的纯正西方艺术学。作为和“军事学”沾点边儿的学习者,Plato的“摹仿”说也肤浅学过,但那篇小说中纵贯西方农学、美学的可比阐发,真正让自家大开眼界。

源码在1000行左右,欢迎使用. 那也是一种缓解方案. 近日和爱人在谈论难点,
尤其认为,  统计机软件开发无非

3.韩非子为啥解读《老子》似或存

似或存兄鹤在鸡群,更令人钦佩的是执着于《九型诸子》的商量不甩手,关于先秦诸子的话题大致都有涉嫌。以那篇作品为例,分析《韩子》中《解老》、《喻老》两篇的特点与大旨,从细微处体现思想史嬗变的基本点,堪称简书中的清流。

 

测试代码 main.c

6月28日:小编实在不要求征婚!

【农学】专题主编水青衣教授制作了一多重访谈节目,受访者“非富即贵”——大概以各专题主编为主。2月28日这一期同样有趣,【哲思】专题的主编梁光宇兄坦露心迹:自作者确实不须要征婚!梁编都说了些什么?详情可知下文……

参考文献:

访谈主编:梁光宇丨小编真正不须求征婚

拉长 /EP /P 运行时候会生成 main.i

#include <stdlib.h>#include "serialize_student.h"#include "serialize_person.h"/* * 实现C的序列流程操作 */int main(int argc, char* argv[]) { struct student stu[] = { { 0, 0, 23, "鸣人", 172.23, 64.05 }, { 1, 0, 34, "杀生丸", 178.23, 74.00 } }; // 先序列化到文件 serialize_student_printfs(stu, sizeof(stu) / sizeof(*stu)); // 开始读取序列化内容 struct student sts[2]; serialize_student_scanfs(sts, 2); for (int i = 0; i < 2; ++i) { printf("%d => %s\n", i, sts[i].name); } puts("你喜欢吗, ... "); struct person ps[] = { { 2, 1, 23, "日向雏田", 162.23, 51.05 }, { 3, 1, 14, "玲", 158.23, 45.00 } }; // 序列化数据 serialize_printfs_person(ps, sizeof(ps) / sizeof(*ps)); // 得到序列化数据 struct person tps[2]; serialize_scanfs_person(tps, 2); for (int i = 0; i < 2; ++i) { printf("%d => %s\n", i, sts[i].name); } system("pause"); return 0;}

7月30日:征文再一次来袭

尘暴之后的征文活动,由【哲思】与【小说】专题联合举行,宗旨为:随机与死去。十二月22
日表露了征文结果,江昭和之《一霎眼,土归土,尘归尘》力夺魁首,子瑈之《梦里不知身是客》紧随其后。盆小猪赵大山似或存图特亚斯坦等【哲思】专题的老朋友们一如既往榜上闪耀。

参考文献:

哲思&小说专题《自由与已故》征文活动

哲思&散文《自由与已故》征文活动获奖名单公示

View Code

二零一七年就要过去了,一样的农忙而扩充,不一样的是内容和形式。【哲思】大家回看了这一年的工作成就后,总括了有关专题2017年的一串数字,可以直观感受下:

中间举行了各样悲惨

【哲思】专题的全体同仁恭祝我们:新年欢腾!

雨书寄北:

尽管以往不常看到梦想,但大家依然希望,等待稍稍一点情状,稍稍一点声响。

易简知能:

各勉日新志,共证岁寒心。

六尘影:

利弊随缘,宠辱不惊。

一抹夜息香:

推延蹉跎,来日无多,二十丽姝,请来吻自个儿,衰草枯杨,青春易过。

白马非马已成斑马:

自强和合,厚德仁智,宾饯日月,青云直上。

爱文字的小药师:

每三遍相见都以久别重逢,每三遍截止都以始于。

先迷后得主:

鸣鹤在阴,其子和之。乐只君子,福履绥之。

心技一体:

乐只君子,福履成之。作者有好爵,吾与尔靡之。

刘博涯:

多一份欢欣就多一份美好,多一份快乐就多一份满足。愿节日的和颜悦色永远伴随着您。

梁光宇

哲思专题从二零一六年7月底建到现行的一年半时间里,有过部分疑心和谩骂,但坚称专题应有的、符合农学思想态度的收入须求是大家社团一直的想法,也正因如此,才引发到越多雅观小编的投入,让我们得以有愈来愈多的表述空间,使得专题在种种板块上越做越成熟和宏观。在那边,我想说的是,专题的上扬离不开官方工作人士、编辑们、大家的协助与赞助。小编要尤其多谢你们,愿前年得以一如既往,初心不变。

编辑:心技一体

《哲思动态》   17/12/31    二〇一七年第04期   总第023期


哲思专题投稿须知

哲思精选刊物总目

欢迎订阅《哲思专题刊物》(可直接点击订阅),以便及时阅读哲思专题的新式杂志。

 

#include <stdlib.h>#include "serialize_student.h"/* * 实现C的序列流程操作 */int main(int argc, char* argv[]) { struct student stu[] = { { 0, 0, 23, "鸣人", 172.23, 64.05 }, { 0, 0, 34, "杀生丸", 178.23, 74.00 } }; // 先序列化到文件 serialize_student_printfs(stu, sizeof(stu) / sizeof(*stu)); // 开始读取序列化内容 struct student sts[2]; serialize_student_scanfs(sts, 2); for (int i = 0; i < 2; ++i) { printf("%d => %s\n", i, sts[i].name); } puts("你喜欢吗, ... "); system("pause"); return 0;}

5月1日:首次单独征文

十月1日不只是愚人节或父兄的祭日,头一天公布的《哲思于你》征文公告意义非同小可,那是【哲思】专题第一遍作独立征文的移位,整个团队也筹划了很久。愚人节那天征文启动,气氛或然有点怪?想起了福柯的佳作:《疯癫与风华正茂》。结果是八月21日公告的,有“助教”美誉的图特亚斯坦兄携大作《艺术学的一脸两面:篱笆与山林》与紫侠狼兄之《思想家们,你们还要欺骗那些世界到何以时候?》共同占有一甲。一道兄的《一个不那么经济学的法学观》榜上闻明,开端了全年更新古典原著解读的传说历程。

参考文献:

哲思专题《哲思于您》征文活动

《哲思于您》征文活动获奖名单公示

说到底只怕来点 封装, 裁减事后的做事量. 或者有点复杂, 直接看代码,
能驾驭就呵呵一笑而过.

四月 26 日:经典共读

【哲思】专题的合法微信群共有多个,但群内的空气一贯很不够“经济学味”。推出一款推向相互的话题性社群活动,就改为编辑团队一直在揣摩的一件大事。三月26
日,“经典共读”活动的率先季——共读经典:《中国教育学简史》——正式在哲思2群启动。由不才组织的共读活动高潮迭起了两个半月,每礼拜五晚与伯也执殳辞游2018赛张飞先迷后得主易简知能等师友互换中国军事学的经历,确实受益良多。一并多谢六尘影等【哲思】团队同仁的支撑与接济!

参考文献:

【哲思专题社群活动】共读经典:《中国历史学简史》

简书哲思周刊170928|《中哲简史》专号

#ifndef _H_SERIALIZE_THREE_SERIALIZE_BASE#define _H_SERIALIZE_THREE_SERIALIZE_BASE#include <assert.h>#include <stdio.h>#include <limits.h>/* * 宏模板, 为想实现序列化的结构注册函数 * name : 结构名称, 例如 student * pbc : 定义的协议, 例如 "%d %c %d %s %lf %lf " * ptf : printf 打印数据参数集, 例如 _->id, _->sex, _->age, _->name, _->high, _->weight | SERIALIZE_PTF * scf : scanf 得到数据的参数集, 例如 &_->id, &_->sex, &_->age, _->name, &_->high, &_->weight | SERIALIZE_SCF */#define SERIALIZE_BASE_REGISTER(name, pbc, ptf, scf) \static int serialize_printfs_##name(void* data, int len) { \ assert(data && len > 0); \ \ FILE* txt = fopen("serialize_"#name, "wb"); \ if (!txt) return -1; \ \ struct name* _ = (struct name*)data; \ for (int i = 0; i < len; ++i) { \ fprintf(txt, pbc, ptf); \ ++_; \ } \ \ fclose(txt); \ return 0; \} \ \static int serialize_scanfs_##name(void* data, int len) { \ assert(data); \ \ FILE* txt = fopen("serialize_"#name, "rb"); \ if (!txt) return -1; \ \ int ns = 0, nz = 0; \ struct name* _ = (struct name*)data; \ const char* s = pbc; \ while (*s) { \ if (*s == '%') \ ++nz; \ ++s; \ } \ \ while (ns < len && fscanf(txt, pbc, scf) == nz) { \ ++ns; \ ++_; \ } \ \ fclose(txt); \ return ns; \} \#endif // !_H_SERIALIZE_THREE_SERIALIZE_BASE

4. 开班就是为止. 如故从最简便的开首. 完毕一个C 连串换流程

图片 1

根源【哲思】笔友们的新春佳节祝福:

盆小猪:

笔者即将迎来与哲思专题相伴的第三年,祝愿哲思专题在枫少的携肺痈进一步棒,愿哲思专题的诸位伯乐万事亨通,大吉大利~

管锥一见:

二零一八年新春的钟声快点敲响吧,急迅带去小编对简书哲思专题的伯乐们谆谆的祝福:祝愿大家诸凡顺利,百发百中!也祝福哲思专题人气更旺,办的特别好。

一道:

在此从前之得,不足以为矜;后天之成,不容以自限。愿逐个人都能在哲思的审视中,发现领先的自身,赋予生命应得的严正和价值。

紫侠狼

做和好想做的事,成为本身想变成的人,无论曾几何时,都不算迟。

冯小欢:

2018,新的一年,只用1天憧憬,364天当始终克己,与灵魂同行,与理性作伴。

经济学诗画

2017走了,2018来了,在那来与往的经过中,大家经历了什么样?又赢得了如何?回首过去,感慨良多。展望今后,望摘硕果。作为人,大家鞭长莫及逃避时间的进度,大家虽渺小,杂多,但经过再长,海洋再阔,也亟需通过一滴水来影射。当中秋节的钟声再一次敲响,我的心坎只有今后,为之感动的唯有此时此刻。成长与如沐春风,难熬与执着,在过去的365个生活里,大家把个其余人生写照,乃至镌刻。今后的光景,大概还将持续着,清醒与疑心,深情与悲歌,但我们仍然在进化,有了那,就已充足。2018,小编来了,大家来了!

希臘智術史

说到底并没有起到为止的效应,我们只是被迫放入时间长河中的窃窃私语,那么每几回结尾意味着什么样?大约是我们的构思在时刻中刻下的号子吧。明天,你会刻下怎样?朋友们,新年欢跃。

依然以败诉告终, 估摸fread, fwrite是见仁见智平台的直接内存文件. 差别大,
不相符跨平台, 可是同样平台是相比快的设想格局.

8月18日:“绿标”时代

“签约小编”一度是许多简书我们的目的或心结,大概是为着改变这一个单一的标价规范,为优质简书小编们发放“绿标”的移动悄然开展。“人文社科”的“绿标”涵盖了文史哲一类专题的精良我,因为有免审直入的权力,为【哲思】的小编们拓宽了宣传的门路。7月18日,《简书人文社科高校精选刊第一期》的发表,是“人文社科”专题第五遍的实业突显。

参考文献:

周末涨知识:简书人文社科高校精选刊第一期出炉啦

 

8.《误会》:荒诞在现代喜剧中的显示尹冬至的幻想

尹谷雨的白昼梦老师,还并未有幸识荆。不过好的稿子自个儿会讲话,任意打开一篇尹先生写赫尔曼·黑塞的篇章,严穆、深远又有几分矜傲。几天前还私行感慨,西哲的良师们恐怕不认同东方思想,但详细细致娓娓道来的讲解格局,墨家所说“君子”的风姿气象却实在在兹。喜欢赫尔曼·黑塞的农学人在学理外又频仍对生存多几分温情,表达的法子只怕有几分阴毒。

《罗曼·罗兰全集》译林出版社

找到标题后再将其去掉. 编译运行.

13月14日:《 哲思 》 月刊上线

12月14日,由【哲思】编辑雨书寄北营造的首期《哲思》简书专题月刊正式上线,收录了【哲思】专题过去一年来的关键篇章,并且由豆瓣、多看、亚马逊等平台同时公布。愿【哲思】专题的关切度不断增高,祝【哲思】同仁们新年欢欣!

参考文献:

《简书哲思月刊001·经始灵台》

 前言

十一月9日:刊物改版

经过半年多的搜索和震动,《简书哲思周刊》停摆了一段时间。详情已不可考,但历史并不如烟。团队协商后决定耳目一新重新起飞,于是高仿某学术期刊刊名的《哲思动态》全新表现了。多谢各位捧场,祝愿新刊在二零一八年能收获更加多的庇佑!

参考文献:

哲思动态|171109

C json实战引擎 三 ,
最终实现部分协理函数

 "%d %c %d %s %lf %lf "

Ⅲ.  新年寄语

在文章一开始, 看一个最简便易行的系列化代码 如下

1次工学讲座,3次征文活动,10期经典共读,24期专题刊物,接受投稿95400篇,审核收入7633篇(不完全计算)……

本质在  自定义编码解码,并接纳 scanf和printf 对映关系

5月10日: 跨年大征文

严俊地说,这一次征文活动是二零一六年年末举行的,二〇一七年十一月10规范发表了征文结果,堪称“跨年”大征文。这一次征文活动由【哲思】与【想法】多少个专题合办,征文主题是:春夏秋冬。一举取胜的作品是尊殇之《重塑》。【哲思】的老朋友冯小欢兄与盆小猪兄的佳作《一年四季藏着虚与实,还有人间多少事……》与《转身以往说爱您》也榜上有名。

参考文献:

哲思&想法专题二〇一六年年初征文活动

哲思&想法专题征文活动获奖名单

咱俩先看一个 C宏模板 种类化注册头文件 serialize-base.h

#include <stdlib.h>#include "serialize_person.h"/* * 实现C的序列流程操作 */int main(int argc, char* argv[]) { puts("Play time game, writing code"); struct person tps[2]; serialize_scanfs_person(tps, 2); for (int i = 0; i < 2; ++i) { printf("%d => %s\n", i, tps[i].name); } return 0;}

Ⅰ. 【哲思】  2017 大事记

 到此地基本都截止了. 主要着力就是地点注册的函数模板.

三月23日:首次文学讲座

【哲思】团队的编撰白马非马已成斑马兄,是风度翩翩的华年学者,在岁末为大家进献了一场理学讲座:《生活遍地皆医学》。有幸在十二月23日晚为白马兄担任经理,在简书大课堂聆听学习了该场讲座,收益颇多。作为【哲思】的连串讲座,前年这场先打头阵,二〇一八年会有愈多,敬请各位关心。

参考文献:

【茶点云课堂】生活遍地皆历史学

增加一下, 怎么拿到文件字符长度

Ⅱ. 【哲思】  2017  年度十佳小说 

【哲思】 专题2017
年的十篇年度大作,排行不分先后,并附上作者的续貂荐语。至于评选的正经,这只可以算得——以己昏昏,使人鲜明。每种人心中各有其所谓“佳作”,而且“十篇”那数据也绝不可能涵盖【哲思】
专题七千多篇入选小说的精髓。毋宁说那意义只在“分享”,并不在“入选”。

pbc 传输协议, 很多商家都在利用, 小编看了一下, 网上落到实处版本比较多,
将来大概有合法版本了. 推荐一个

6.徐渭:那几个杀人的狂人,是中国率先的作家盆小猪

盆小猪兄学贯中西,更可贵是质优量大,每隔几天就有篇分量十足的舆论赐稿【哲思】。考虑到盆兄的本职工作也很忙,那精力和才情就更令人吃惊了。小小的【哲思】专题当然不大概局限,今年盆兄顺遂签约了,那是简书之幸。从盆兄的好多大作品选用一篇做代表是很难的,选那篇是因为徐渭“古无小说家”与福柯“近代始有人”的命题相比较,那视角着实令自身大吃一惊。明儒与福柯二者亦为自作者所爱,中间似有可正如的地点,但不少要点小编还不曾消化。

盆小猪手绘《你才是兔子》体系 

其一意思很了然, 大家都通过json来处理难题 那里推荐自个儿写的一个json引擎

是还是不是很酷炫, 好测试一下 main.c

cloudwn pbc
https://github.com/cloudwu/pbc 

1.“昌邑多枭”与《鸱鸮》之志先迷后得主

《诗经》中有《鸱鸮》一诗,旧说为周公恐惧流言而作。每读古书读到《鸱鸮》,忧谗畏讥的情感便觉凄婉恳切。海昏侯墓中那方“汉废帝”印,以鸱鸮形为印纽,尤觉沉痛。得主兄的稿子引述,不仅揭开了一段大汉历史,同时提供了经学诠释的合计格局。简书上讲野史故事的稿子不计其数,真正体现史学方法的却屈指可数。

正文

5.《心经》蠡测磨牛沙

磨牛沙兄年轻有为,大概有点看不上简书,后来就不佳好写小说了。看不上简书的撰稿人多了,牛兄那样讲道理又有骨气的却不多。希望牛兄新年仍有大手笔赐教。

 

就此那四回《哲思动态》的篇幅也是史无前例的长,共分为——哲思大事记/年度大作/新年寄语——多少个单元。分别介绍了【哲思】专题前年中生出过的十件盛事,和周详挑选的十篇年度大作,最终致以【哲思】笔友以及专题集体同仁们最真切的新年祝福。

那也是一种缓解方案.

10.《中国文学简史》:那本看到书名就令人昏昏欲睡的书,为啥值得一读?乐之读

乐之读老师是很知名的简书作者,而且很有坚持不渝,每一篇小说都以可怜扎实的书评。乐之读老师的见解很高,既不评滥俗的书,也不做表面的切磋,真正言之有物。纵然如此,看到这一篇的批评对象时仍旧大吃一惊——《中国医学简史》。由于专业的局限,对“异——同——破——立”那样构建连串的格局是不是有助于精通原著有所保存。但竟这么协会起一篇作品来,却是万分受教。简书不是做学术的平台,有深度的始末什么去协会突显,自身是值得思考的课题。

不过对于C,  如故有一套本身的管理学, 用最简便落成一场意外.  C/C++ 老了,
但却是美的.

9.希腊(Ελλάδα)教育学中的难点意识与种类化观念白马非马已成斑马

白马兄前文已经介绍,年轻有为风度翩翩的【哲思】编辑,看到团队同仁们都忙着应付俗务,毅然撑起了专题的理学底蕴。听他们说白马兄还预备了几堂教育学讲座,并筹备着下一阶段的“经典共读”活动,已经按捺不住要为白马兄去捧场了!

3. 采用json协议

 

源码成功, 到此地基本上可以相差了.

本次后记大家在linux上测试一下 将刚生成的 serialize_person 上传到
linux平台

图片 2

后记

c. 考虑代码转码

 

 这里探访注释不难精通, 那里教书一下 头文件导入宏规则.

a. 考虑转码

测试如下, 在window上测试代码 main.c

1. 一遍战败增加 fscanf -> fread ; fprintf -> fwrite

正文研究是一种简易的系列化方案. 保障不一样应用端都能分析出正确结果.

 

图片 3

实际生产条件中可能会更直白些, 快些, 没bug就行, 怎么爽怎么随便,
怎么快怎么来. 哈哈.

// struct student 结构体序列化到文件的方法static void _student_serialize(struct student* stu, FILE* txt) { fwrite(stu, sizeof(*stu), 1, txt);}// struct student 结构体反序列化static void _student_deserialize(struct student* stu, FILE* txt) { fread(stu, sizeof(*stu), 1, txt);}

图片 4

平等 window 上 vs 必要那样
设置图片 5

 

核心是 

2. 运用 protobuf - c google一种协议.

.......

  C中对连串化商讨少, 因为不少传输的内容都有投机分析的轮子.
对于体系化本质是统一编码, 统一解码的情势.

围绕 空间和岁月来回搞,  通用依然针对.

b. 考虑 fopen 创建utf8 文件

 

 

C json实战引擎 一 ,
完毕解析部分

图片 6

关于C数据种类化的简短操作就到此处了.    错误是免不了的, 拜~~~

测试结果如下, 一切正常

测试文件 main.c

最终大家还会谈论那种处境.

 

 

 

gcc -g -Wall -o serialize.out serialize.c

 

图片 7

#include <stdio.h>#include <stdlib.h>#define _INT_NAME (64)#define _STR_TXT "student.struct"struct student { int id; char sex; int age; char name[_INT_NAME + 1]; double high; double weight;};// struct student 结构体序列化到文件的方法static void _student_serialize(struct student* stu, FILE* txt) { fprintf(txt, "%d %c %d %s %lf %lf ", stu->id, stu->sex, stu->age, stu->name, stu->high, stu->weight);}// struct student 结构体反序列化static void _student_deserialize(struct student* stu, FILE* txt) { fscanf(txt, "%d %c %d %s %lf %lf ", &stu->id, &stu->sex, &stu->age, stu->name, &stu->high, &stu->weight);}// 简单打印数据static void _student_print(struct student* stu) { static int _idx; printf("%d: %d %c %d %s %lf %lf \n", _idx++, stu->id, stu->sex, stu->age, stu->name, stu->high, stu->weight);}/* * 一种最简单的通用序列化方法 */int main(int argc, char* argv[]) { FILE* txt = fopen(_STR_TXT, "wb+"); if (NULL == txt) { fprintf(stderr, "fopen " _STR_TXT " error!\n"); return -1; } // 这里写入数据 struct student stu = { 0, 0, 23, "鸣人", 172.23, 64.05 }; _student_print(&stu); // 这里序列化并写入数据到文件 _student_serialize(&stu, txt); // 我们读取这个文件, 先设置文件指针到文件开头 fseek(txt, 0, SEEK_SET); // 开始读取数据 struct student ts; _student_deserialize(&ts, txt); _student_print(&ts); fclose(txt); system("pause"); return 0;}

将 window生成的 student.struct 文件传输到linux测试机上, 运行结果 如下:

C json实战引擎 二 ,
已毕结构部分

#ifndef _H_SERIALIZE_THREE_SERIALIZE_STUDENT#define _H_SERIALIZE_THREE_SERIALIZE_STUDENT#include <assert.h>#include <stdio.h>#include <limits.h>// 1.0 定义序列换结构体#define _INT_NAME (64)struct student { int id; char sex; int age; char name[_INT_NAME + 1]; double high; double weight;};// 2.0 定义保存文件交换文件名 当前文件名去掉 .h#define _STR_SERIALIZE_TXT_student "serialize_student"//3.0 定义转换读取协议, printf协议后面跟' ', printf后面跟的, scanf跟的#define _STR_SERIALIZE_PBC_student "%d %c %d %s %lf %lf "#define _F_SERIALIZE_PRINTF_student(p) \ p->id, p->sex, p->age, p->name, p->high, p->weight#define _F_SERIALIZE_SCANF_student(p) \ &p->id, &p->sex, &p->age, p->name, &p->high, &p->weight// 3.0 定义序列换数据写入方法static int serialize_student_printfs(void* data, int len) { assert(data && len > 0); FILE* txt = fopen(_STR_SERIALIZE_TXT_student, "wb"); if (!txt) return -1; struct student* p = data; for (int i = 0; i < len; ++i) { fprintf(txt, _STR_SERIALIZE_PBC_student, _F_SERIALIZE_PRINTF_student(p)); ++p; } fclose(txt); return 0;}// 4.0 定义序列化数据读取方法static int serialize_student_scanfs(void* data, int len) { assert(data); FILE* txt = fopen(_STR_SERIALIZE_TXT_student, "rb"); if (!txt) return -1; int ns = 0; struct student* p = data; int nz = 0; const char* s = _STR_SERIALIZE_PBC_student; while (*s) { if (*s == '%') ++nz; ++s; } while (ns < len && fscanf(txt, _STR_SERIALIZE_PBC_student, _F_SERIALIZE_SCANF_student(p)) == nz) { ++ns; ++p; } fclose(txt); return ns;}#endif // !_H_SERIALIZE_THREE_SERIALIZE_STUDENT

 

 运行结果是

背后写一个构造 来落到实处种类化 serialize_person.h

#ifndef _H_SERIALIZE_THREE_SERIALIZE_PERSON#define _H_SERIALIZE_THREE_SERIALIZE_PERSON// 必须导入(继承) 序列化基础实现模板#include "serialize-base.h"// 1.0 定义序列换结构体struct person { int id; char sex; int age; char name[65]; double high; double weight;};// 2.0 注册得到 ptf 结构#undef SERIALIZE_PTF#define SERIALIZE_PBC(id, sex, age, name, high, weight) \ _->id, _->sex, _->age, _->name, _->high, _->weight// 3.0 注册得到 sct 结构#undef SERIALIZE_SCF#define SERIALIZE_SCF(id, sex, age, name, high, weight) \ &_->id, &_->sex, &_->age, _->name, &_->high, &_->weight// 4.0 最后开始注册实现体SERIALIZE_BASE_REGISTER( person, "%d %c %d %s %lf %lf ", SERIALIZE_PBC(id, sex, age, name, high, weight), SERIALIZE_SCF(id, sex, age, name, high, weight))#endif // !_H_SERIALIZE_THREE_SERIALIZE_PERSON

恐怕是最精简的一种完毕, 源码写的很好, 不过认为多少复杂了.
为了这样作用这么搞, 没意思.

背后继续上课通过 fscanf 和 fprintf 创设 C的行列化. 先看一种完结体,
serialize_student.h

 

 

 在 linux 上拍卖的代码 是 serialize.c

最重大的是 pbc 须要转移中间协议文本,  占用内存也不少.

 

#include <stdio.h>#include <stdlib.h>#define _INT_NAME (64)#define _STR_TXT "student.struct"struct student { int id; char sex; int age; char name[_INT_NAME + 1]; double high; double weight;};// struct student 结构体反序列化static void _student_deserialize(struct student* stu, FILE* txt) { fread(stu, sizeof(*stu), 1, txt);}// 简单打印数据static void _student_print(struct student* stu) { static int _idx; printf("%d: %d %c %d %s %lf %lf \n", _idx++, stu->id, stu->sex, stu->age, stu->name, stu->high, stu->weight);}/* * 处理 window 上生成的内存文件, 看是否跨平台 */int main(int argc, char* argv[]) { // 这里就简单读取 _STR_TXT FILE* txt = fopen(_STR_TXT, "rt"); if (NULL == txt) { fprintf(stderr, "fopen " _STR_TXT " error!\n"); return -1; } // 开始读取数据 struct student ts; _student_deserialize(&ts, txt); // 打印读取数据测试 _student_print(&ts); fclose(txt); return 0;}

透过那种落成, 是跨平台的. 因为C落成规范和和气定义协议匡助

_H 开头 + _项目名 + _文件名(去掉后缀) 
主要为了化解项目专门多的时候联编造成宏碰撞.

最终测试结果

运作结果 如下:

linux得到文件长度扩张 
http://blog.csdn.net/yutianzuijin/article/details/27205121

图片 8图片 9

再发表前边封装在此之前讲一个小知识, linux 上宏调试有个小技巧 通过 gcc -E
导出 *.i 文件, 查看宏命令.

相关文章

Comment ()
评论是一种美德,说点什么吧,否则我会恨你的。。。