一起talk C栗子吧(第一百九十三回:C语言实例--DIY less命令二 )


各位看官们,大家好,上一回中咱们说的是DIY less命令的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起talk C栗子吧!


看官们,看了上一回的内容,相信大家意犹未尽,我们趁热打铁,继续介绍响应用户命令的内容。

less命令支持很多用户命令,我们只响应三个常用的命令:

  • 命令q:输入该命令后,结束less程序,回到shell中;
  • 命令j:输入该命令后,屏幕向下滚动一行,显示文件中下一行的内容;
  • 命令k:输入该命令后,屏幕向上滚动一行,显示文件中上一行的内容;

响应用户命令的整体思路是:

获取用户输入的命令,然后判断是什么命令,并且依据命令对文件进行相应的处理。

接下来我们沿着这个思路,一步一步地介绍:

1.获取用户输入的命令

我们使用getchar从终端中获取用户输入的命令,这点相信大家都能想到,不过这里有个细节需要给大家解释一下。我们在使用less命令的时候,输入相应的命令后less就直接运行,不但没有显示命令的内容而且没有输入回车键就直接执行命令。我们使用getchar显然是达不到这种效果的,那么是不是还有其它获取用户输入命令的办法?其实不需要其它的办法,我们只需要关闭当前终端的回显功能和缓冲功能就可以实现这种效果。关于终端回显功能和缓冲功能的内容,我们在前面章回中有详细的介绍,这里就不再介绍了,下面是主要的代码,请大家参考:

            //close the echo and buffer
            system("stty -echo -icanon");

            cmd = getchar(); // get the commend

            //open the echo and buffer
            system("stty echo icanon");

2.判断命令并且响应命令

判断命令本质上就是比较字符的ASCII码值,这点我们以前也介绍过。我们程序中我们通过if/else语句来判断不同命令,下面是主要的代码,请大家参考:

            if(cmd == 'q')
            {
                //对q命令做相应的处理
            }
            else if(cmd == 'j')
            {
                //对j命令做相应的处理
            }
            else if(cmd == 'k')
            {
                //对k命令做相应的处理
            }
            else
            {
                //对q,j,k以外的命令不做处理
                printf("can't running this cmd in less \n");
            }

各位看官,关于DIY less命令的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解 。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值