练习6-6

作者: Hy_Slin | 来源:发表于2018-02-11 14:07 被阅读0次

一个这样的程序前面就需要定义那么多的函数,想想也有点夸张.
主函数控制整体流程,
getword函数读取输入的字符串.
然后进行分析.
如果输入的字符串开头是'#'(这是因为strcmp查到'\0'就结束不再向下对比.所以只对比了开头的'#',只要开头都是'#'判断式就为真.).
执行getdef函数.
否则如果开头首字符不是字母.
输出这个字符串.
否则如果调用lookup函数在链表里查找字符串没有找到.
输出这个字符串.
最后.
将p指向的块的定义内容放回缓冲区.
主函数先到这,有一部分不知道怎么回事等会再说.
再看getdef函数.
开头是skipblanks函数,跳过空白符.
然后依然通过getword函数读取'#'之后的单词.并判断首字符是不是字母.不是字母输出错误信息.
如果是字母,判断是"defien"还是"undef"都不是的话输出错误信息(因为getword返回值为首字符,所以只能判断首字符是不是字母.)

如果是"define"或者"undef"的话.跳过空白符之后继续判断定义的首字符是不是字母.首字符不是字母依然输出错误信息.并且将读取的定义的名字放在变量name中.

判断是"define"后,通过getch()函数从缓冲区读取定义的替换文本.
读取到末尾(遇到换行符或文件结束符.)
在结尾加上空字符'\0'.
然后判断读取的字符数量.小于等于0就是没有读取到.肯定是错误的.
读取到的话就调用install函数将名字的替换文本放入链表中.

如果是"undef"也一样而且更简单.符合条件直接调用"undef"函数.

error函数会把产生错误的那一行直接吃了.后续不会在继续判断.因为是错误的.

skipblanks函数很简单就是跳过空白符.

相关文章

  • 练习6-6

    一个这样的程序前面就需要定义那么多的函数,想想也有点夸张.主函数控制整体流程,getword函数读取输入的字符串....

  • 6-6

    新高的股票: 海天,上海机场,白云机场,茅台, 恒瑞,

  • 6-6

    (六一到六五我去成都玩了,吃得很开心,体重也很开心,跟我一起高涨,期间饮食锻炼不说了,再慢慢减的话就很漫长。论控制...

  • 6-6

    心有所爱就已经很幸运,又为什么要去纠结爱而不得。——致大森

  • 6-6

    周密魔法学习训练打卡 今日:2019年6月6日 70天打卡累计天数:28/70 宣言:(做到真正了解孩子) 孩子训...

  • 6-6

    层次越高的人,越懂得温和待人。人,永远都是相互的,我们如何对待人,别人就会如何待我们,我们想要别人尊重自己,就要先...

  • 6-6

    问候自己一声

  • 6-6

    时隔很久,也就是一个多月的样子,我没有再细细认真的写过简书了。 话说亲人的离世,让我无法释掉的怀。曾有一度,我曾恨...

  • #知识体系精深营#六月+12次作业+第20组2小组+ynqj_a

    6-1 6-1 6-2 6-2 6-3 6-3 6-4 6-4 6-5 6-5 6-6 6-6 6-7 6-7 6...

  • 父母成长训练营之#好好学习100天#42/100天 2018.2

    第六章《永远不要独自进餐》 6-6分享促进成长

网友评论

      本文标题:练习6-6

      本文链接:https://www.haomeiwen.com/subject/odhurxtx.html