美文网首页
练习5-17

练习5-17

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

这个题目我想很久没明白啥意思.写到最后才明白,这个pos应该是对每个输入行从第几个字符到第几个字符进行比较.这样理解应该是对的.
前面函数定义暂时跳过.
直接进入主函数.
声明也跳过.
首先就是用readargs函数处理参数.
那么先进入readargs函数.
这里的处理方式与前几个练习的主函数的方法是一样的.
首先判断程序参数剩余数量,并且判断参数字符串首字符是'-'号或者是'+'号.
符合条件执行循环体.
如果是'-'号并且,当前参数(argv在之前已经被自增到'-'号参数的字符串地址)不是数字.
执行下列循环体程序块.
判断当前参数.
*++argv[0]就是'-'号后面的具体参数.
然后判断参数具体是哪种,之后执行相应的操作.
然后就到了另一种情况,就是参数带'-'号,但是是数字的情况.
通过atoi函数,将参数转化为数字.保存到变量pos2.
然后另一种情况,就是'+'号.(因为最外层while已经判断为真的情况下最后一个判断式就是'+'号,所以程序走到这里只剩'+'号一个选择了.)
同样是将参数保存到pos1中,在判断式中完成赋值的同时进行判断,是否小于0,如果小于0输出错误提示.
下面是numcmp.c的源文件
首先numcmp函数需要用到substr函数.
所以先看substr.
这个函数说简单也没什么难的.
首先计算参数输入行的长度(len).
然后判断输入行的正确性,
是否有pos2参数,输入行是否大于pos2.
如果大于就将输入行终点限定在pos2的位置.
然后如果输入行小于参数pos2,那么输出错误报告.
然后是将以pos1为开始pos2为结束的字符串内容复制到str中.
最后加上NUL空字符.
回到numcmp函数.
substr处理输入行.
然后将处理后的输入行转化为浮点数(atof).
然后进行比较.
至于charcmp.(写到这里我才突然明白pos1和pos2到底是干啥的)
如果有参数pos2.
那么将pos2设置为比较结束的地方.
否则将最长输入行的长度,当做比较范围.
然后是判断参数dir,执行相应操作,跳过非字符数字空格等的地方.
然后是比较.判断是否需要不区分大小写(fold).进行比较后返回相应的值.

这个练习相对来说耗时真的长,原因就是不知道题目是啥意思.pos弄半天不知道干啥的.

相关文章

  • 练习5-17

    这个题目我想很久没明白啥意思.写到最后才明白,这个pos应该是对每个输入行从第几个字符到第几个字符进行比较.这样理...

  • 认知天性

    5-17第三章1/2 读进度: 3.1频繁的集中练习只会产生短期记忆 3.5多样化练习促进知识的活学活用 导读问题...

  • 5-17

    71.1kg 早饭:一杯醇品,三片切片,20g原味沙拉酱,白开水两杯。 午饭:一份米饭淋辣椒油(美滋滋),一份葱豆...

  • 5-17

    **第一点**----很抱歉从昨天开始学习的markdown,直至今日才开始真正意义上的使用中,>对于很多的语法,...

  • 5-17

  • 5-17

    【一悟】考研帮 定位:考研助手类应用 目标人群:考研备考生 做的好的地方: 1.任务清单,充分考虑到考生玩手机的时...

  • 5-17

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

  • 5-17

    昨日和两个好友争论,他们在ICU工作,工作强度非常的大,他们认为自己的时间已经趋于饱和,也没有精力去做改变现状,比...

  • 5-17

    佛教的精髓精神是什么? "四谛"的字面意思是四个真实不虚的道理,是原始佛教关于人生为何具有苦恼和如何摆脱苦恼的四大...

  • 5-17 每个成长者,必须学会刻意练习

    【WHAT】刻意练习,是在学习区内通过一定地训练的方式,来获得并强化心理表征的过程。通过刻意练习,培养和强化你调用...

网友评论

      本文标题:练习5-17

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