练习5-14

定义的那几个函数在教材那本书上有,也没什么难度.
(我是重新去看的,发现没什么卵用,对这里没什么帮助.)
先进入主函数.
这里的最外层while与前一个练习一样,都是自增argv找到负号-.然后进行判断,这里的判断允许省略负号,可以一个负号带两个参数.
这里的做法后面有写,就是将option的二进制位第零位和第一位的值修改,判断哪个位为真(1),就执行哪个操作.
如果遇到不是正确参数的情况,将argc设置成1,并将rc设置成-1.退出后不能继续循环.程序向下走.
如果有问题的话之前的循环体会将argc设置成1,因为非零为真,所以会执行那条错误语句.
正确的情况下argc是会自减到0的因为循环体上argc是前自减.会执行else后面的语句,首先readlines函数将读取的输入行首字符的地址都保存到指针数组lineptr中,然后将读取的输入行数量赋值给nlines.然后就是进行条件判断,判断输入的参数.
首先就是先判断用哪种排序方式排序(字符或者数值),option对NUMERIC进行按位与操作,相同位是1则结果为1,宏定义NUMERIC为1,所以如果option在之前的参数判定中为被设置第零位为1的话,那么结果也将为1.那么将用numcm函数去进行排序.否则将用strcmp函数.
然后是输出是按正序输出还是倒序输出.判断依据则是option与DECR的按位与结果.
C语言中非0即为真,所以writelines函数中,宏定义DECR为2第一位为1(右数第二位)其余位为0.option对其按位与,同位为1则为1.所以其结果可用于进行判断式判断.

你可能感兴趣的:(练习5-14)