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


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


看官们,我们在上一回中介绍了响应用户命令的整体框架,这回我们详细介绍响应用户命令的具体内容。因为我们只响应了q,j,k三个命令,所以我们分别介绍如何响应这三个命令:

1.响应q命令:

我们在接受到用户输入该命令后会使用break跳出读取文件内容的while循环。然后关闭打开的文件并且结束less命令,回到我们DIY的shell中。这里的核心代码就是break语句,为了更加友好一些,我们还输出了一个提示,告诉用户less命令已经退出了,请大家参考以下代码:

            if(cmd == 'q')
            {
                current_line = 0;
                printf("Exit less cmd. \n");

                break;
            }

2.响应j命令:

我们在接受到用户输入该命令后,会向当前终端中输出文件中下一行的内容,屏幕会向下滚动一行,然后继续回到while循环中读取文件中下一行的内容。在输出内容的时候,我们修改了两个变量的值。一个是用来统计当前行数的变量:current_line;另外一个是统计j命令运行的次数:back_countcurrent_line变量在显示“一个屏幕大小的内容”时使用,back_count是留给k命令使用的,看官莫急,我们稍后就会介绍他。下面是程序的主要代码,请大家参考:

            else if(cmd == 'j')
            {
                printf("line: %-4d:",current_line);
                printf("%s",buf);

                back_count += 1; // add the count of j cmd
                current_line += 1;
            }

3.响应k命令:

我们在接受到用户输入该命令后,会向当前终端中显示文件中前一行的内容,屏幕会向上滚动一行。

大家都知道,我们操作文件流的时候文件流会自动向前移动,因此输出文件下一行的内容比较容易。这时我们想输出文件中前一行的内容,相当于文件流向后退,目前还没有这样的功能。就像水往低处流是一种自然现象现象一样,想要让水往高处流怎么办?那就需要使用水泵。那么让文件流回退是不是可以使用文件流泵呢?这位看官可真会想呀,文件流泵都能想出来,哈哈。虽然文件流不能回退,但是我们可以想办法让它达到回退的效果。至于使用什么办法呢?我们暂且不表,下一回中再给大家详细介绍。

各位看官,关于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、付费专栏及课程。

余额充值